Этот код my initial stab у проблемы с Хэмминг-Дистрибьюцией на Exercism.io, но это не так, когда строка a
длиннее строки b
, и я пытаюсь понять, почему.Почему отказ не отклоняется?
def self.compute(a, b)
a.split('').reject.with_index { |c, i| c == b[i] }.size
end
Я получил вокруг проблемы путем обрезки первую строку ...
def self.compute(a, b)
a[0...b.size].split('').reject.with_index { |c, i| c == b[i] }.size
end
... но я не понимаю, почему reject
является в том числе и дополнительных символов. Когда я проверяю сравнения, они кажутся ложными, как и следовало ожидать, но все же включены в результат.
Может ли кто-нибудь сказать мне, почему?
Это потому что, когда вы отклоняете, включается 'false' _means_. – matt
'split ('')' такой же, как 'split'. Сделайте вашу жизнь проще и сохраните четырех персонажей. –
Вот что я тоже подумал, «Оловянный человек», но, похоже, это не так. 'split', без аргументов, по умолчанию, по умолчанию разделяется на пробелы. http://www.ruby-doc.org/core-2.2.0/String.html#method-i-split –