Две версии Ruby: 1.8.7 (которую использует школа) и 1.9.3 (текущая версия, которая у меня есть в моей системе).
Просто любопытно, что изменилось в 1.9.3, из-за чего следующее не работает должным образом. Функция выводит true
, если все элементы в списке одинаковые, false
, если не все элементы одинаковы.
e.g.
[1,1,1] => true
[1,2,1] => false
В Ruby 1.9.4
odd_one_out_in_list?([1,1,1])
=> false #which is should output 'true'
а в Ruby 1.8.7
odd_one_out_in_list?([1,1,1])
=> true #which is good
Мне кажется, что приведенная ниже логика устраивает. Чем отличается 1.9.4? Я проверил: Что такое разница между Ruby 1.8 и Ruby 1.9, но я не могу найти там ответ.
Вот моя функция:
def odd_one_out_in_list?(list)
sorted_list = list.sort
if sorted_list[0] == sorted_list[list.length-1]
return true
else
return false
end
end
def odd_one_out_in_list?(list); list.uniq.size == 1; end
. Проще и, наверное, быстрее. - person Guilherme Bernal   schedule 29.10.2012