Проверка значений по модулю 3 не поможет правильно определить нечетные числа.Однако в Ruby есть встроенный метод Integer#odd?
.Объедините это с методом Array#select
, и вы сможете быстро выбрать нечетные элементы массива, прочитав их.
a = (1..10).to_a # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
p a.select(&:odd?) # [1, 3, 5, 7, 9]
Если вы настаиваете на использовании модуляОператор, вы должны проверить x % 2 == 1
, чтобы проверить целочисленность x
на нечетность:
p a.select { |x| x % 2 == 1 } # [1, 3, 5, 7, 9] again, but less efficiently
Метод modulo не работает с массивом в качестве получателя, что вы и пытались сделать.Вот что говорит вам сообщение об ошибке.