Вы проверяете последний элемент, а затем 2 числа после него. Доступ к элементу в массиве больше, чем длина, возвращает nil
. Попытка добавить nil
к числу приведет к ошибке, которую вы видели.
Чтобы решить эту проблему, вам следует прекратить проверять, когда последний из трех элементов достигает конца массива, а не первого. Это означает, что вы должны остановить 2 элемента раньше.
Этого легко добиться, просто вычтя 2 из длины в вашем l oop.
def lucky_sevens?(numbers)
i=0
while i < numbers.length - 2
if (numbers[i] + numbers[i+1] + numbers[i+2]) == 7
return true
end
i+=1
end
false
end
Еще ruby способ сделать это, будет следующим:
def lucky_sevens?(numbers)
numbers.each_cons(3).any? do |group_of_3|
group_of_3.sum == 7
end
end