Как получить всю диагональ из массива слов в Ruby? - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть массив в Ruby

words = ["horses", "follow", "useful", "offset"]

Ссылка:

h o r s e s
f o l l o w
u s e f u l
o f f s e t

Я хочу получить список всех его диагоналей, как этот.Вот хочу, я ожидаю в результате:

["o", "uf", "fsf", "hoes", "olfe", "rlut", "sol", "ew", "s"]

Было бы полезно, если кто-нибудь может мне немного помочь в этом.Спасибо

1 Ответ

0 голосов
/ 02 декабря 2018

Попробуйте:

words = ["horses", "follow", "useful", "offset"]

words.reverse.each_with_index.map{|s,i| " " * i + s }.inject(Array.new(words.size + words.last.size-1,"")) do |a,s| 
  s.chars.each_with_index do |c,i| 
    a[i] = c + a[i]
  end
  a
end.map(&:strip)
# => ["o", "uf", "fsf", "hoes", "olfe", "rlut", "sol", "ew", "s"]

Сначала words.reverse.each_with_index.map{|s,i| " " * i + s } создает массив со смещением пробела:

offset
 useful
  follow
   horses

Inject создает массив пустых строк, а внутри основного блока добавляются символы каждой строки.правильному элементу массива

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...