Я решил проблему, которая требует от вас написать метод для определения того, какие слова в предоставленном массиве являются анаграммами, и сгруппировать анаграммы в подмассив в вашем выводе.
Я решил это, используя то, что кажется типичным способом, который вы бы сделали, сортируя слова и группируя их в хэш на основе их отсортированных символов.
Когда я изначально начал искать способ сделать это, я заметил, что существует String#sum
, который складывает порядковые номера каждого символа вместе.
Я хотел бы попытаться разработать способ определения анаграммы на основе использования sum
. Например, «автомобили» и «шрам» — это анаграммы, и их sum
равно 425.
при вводе %w[cars scar for four creams scream racs]
ожидаемый результат (который я уже получаю, используя хэш-решение): [[cars, scar, racs],[for],[four],[creams,scream]]
.
Кажется, что-то вроде:
input.each_with_object(Hash.new []) do |word, hash|
hash[word.sum] += [word]
end
это путь, который дает вам хэш, где значения ключа «425» равны ['cars','racs','scar']. Я думаю, что мне не хватает переноса этого в ожидаемый формат вывода.