Здесь есть несколько проблем, но суть в том, что вы ошибаетесь.Вы можете считать до числа или вниз от числа, и похоже, что вы хотите отсчитать, начиная с word.length
.Это нормально, но давайте посмотрим и посмотрим, что вы на самом деле делаете.
С while i > word.length || i != -1
вы проверяете каждую итерацию, что i
... больше, чем длина слова?Как бы это получилось (вы никуда не добавляете i
) и почему вы хотите это проверить?
Поскольку вы выбрали обратный отсчет, мы хотим остановиться, когда букв не осталось,Поэтому измените ваше состояние на while i > 0
.Теперь мы будем зацикливаться только тогда, когда осталось пройти через буквы.
Однако есть еще одна проблема - потому что индексы начинаются с 0, пытаясь получить word[i]
, когда i == 3
даст вам nil
!Таким образом, вы действительно хотите переместить i = i - 1
на первую строку в вашем цикле.
После этих изменений вы должны иметь:
def is_reversed(word)
i = word.length
reverse = ""
while i > 0
i = i - 1
letter = word[i]
reverse += letter
end
return reverse
end
puts is_reversed("cat")