Я реализовал функцию группировки анаграмм.Вкратце:
ввод: ['cars', 'for', 'potato', 'racs', 'four', 'scar', 'creams', scream ']
вывод: [["cars", "racs", "scar"], ["four"], ["for"], ["potato"], ["creams", "scream"]]
Я хотел бы знать, есть ли лучший способ сделать это.Я действительно думаю, что использовал слишком много повторений: until
, select
, delete_if
.Есть ли способ объединить операторы select
и delete_if
?Это значит, можно ли автоматически удалять выбранные элементы?
Код:
def group_anagrams(words)
array = []
until words.empty?
word = words.first
array.push( words.select { |match| word.downcase.chars.sort.join.eql?(match.downcase.chars.sort.join ) } )
words.delete_if { |match| word.downcase.chars.sort.join.eql?(match.downcase.chars.sort.join ) }
end
array
end
Заранее спасибо,