Я решил проблему, которая просит вас написать метод для определения того, какие слова в предоставленном массиве являются анаграммами, и сгруппировать анаграммы в подмассив в ваших выходных данных.
Я решил эту проблему, используя типичный способ, которым вы могли бы: сортировать слова и группировать их в хэш на основе отсортированных символов.
Когда я впервые начал искать способ сделать это, я заметил, что существует 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']. Я думаю, что мне не хватает, перемещая это в ожидаемый формат вывода.