splt.each do |p|
Приведенное выше возвращает каждый из символов в s
, а не позиции символов. Вот почему вы получаете сообщение об ошибке ... для "abba" вы делаете splt['a']
не splt[0]
Если вы хотите, чтобы позиция, которую вы можете сделать каждый_with_index
splt.each_with_index do |_, p|
Поскольку сам символ не требуется, мы присвоили ему подчеркивание _
в итерации.
В качестве альтернативы вы можете использовать диапазон целых чисел
(0...splt.length).each do |p|
Примечание использование ТРИ точки в диапазоне, что означает от нуля до единицы меньше длины, поскольку строка из пяти символов будет иметь только знаки от 0 до 4.
Или вы можете просто сделать l oop сколько раз встречаются символы ...
splt.length.times do |p|