Вам нужно понять разницу между «правдивостью» / «ложностью» и бытием true
/ false
.
Ruby оценил бы все, что не nil
или false
как правдивое, поэтому вы можете написать:
puts 1 if 1
и ставит 1.
В этом задании вас просят использовать правдивость, поэтому вместо сравнения с true
вы можете использовать ruby, чтобы выполнить преобразование для вас с использованием двойного отрицания !!
:
pry> [1, "2", nil, true, false].map{|e| !!e}
=> [true, true, false, true, false]
Также обратите внимание, что блок в reduce
принимает два параметра - один является текущим элементом, а другой аккумулятором - результат взаимодействия с предыдущими элементами. Используйте оба в блоке, иначе вы будете возвращать результат в зависимости только от последнего элемента массива.