Я пытаюсь удалить каждый второй элемент, пока не останется только один. Итак, это начинается с 1 пропустить, удалить, пропустить, удалить и так далее.удалять каждый второй элемент до тех пор, пока он не останется рубином
до сих пор у меня было что-то вроде этого
l =* (1..10)
until l.length == 1
l = l.each_slice(2).map(&:first)
puts l
end
Есть несколько проблем с этим. , и every_slice фактически просто выбирает каждый второй, а не удаляет каждый второй элемент. окончательный результат должен быть 5.
Я ищу не обязательно для самого красивого решения, но для самого простого и простейшего.
Я ценю вашу помощь
Вы должны использовать строчные 'L' потому что капитализированных слов считаются константами в Ruby. Тогда строка внутри вашего цикла должна быть просто 'l = l.each_slice (2) .map (& first)', и это сработает, правильно? Не могли бы вы уточнить, что не работает и почему? –
проблема в том, что она всегда начинается с начала, в то время как я предпочитаю, чтобы она продолжалась непрерывно. – Rika