Выберите не более двух ненулевых элементов и проверьте, был ли доступен только один элемент.
>> [0,1,1].select {|x| !x.zero?}.take(2).size == 1
=> false
>> [0,1,0].select {|x| !x.zero?}.take(2).size == 1
=> true
>> [1,2,3].select {|x| !x.zero?}.take(2).size == 1
=> false
Прекрасно работает в Ruby 1.8.7, но обратите внимание, что select
возвращает массив, поэтому он не "оптимально ленивый". Вот запись в блоге , показывающая, как создать некоторые ленивые перечислители в Ruby.