#ruby
#ruby
Вопрос:
Я должен проверить, насколько, например:
caffe
и latte
похожи, поэтому a
и e
похожи, поэтому 2/5 букв похожи, a
и e
.
например
val1 = "caffe"
val2 = "latte"
два входных
и теперь выводятся «a» и «e»
Комментарии:
1. Каков ваш ожидаемый результат для
bar
vsor
?2. просто хочет напечатать похожее слово!!
3. Вы можете либо реализовать, либо найти готовую реализацию расстояния Левенштейна , если хотите иметь четко определенный способ проверки сходства строк.
4. Очень сложно понять, что вам нужно. Чтобы увеличить ваши шансы на получение осмысленного ответа, пожалуйста, пишите четко, очень точно и явно указывайте формат ввода и вывода, приводите много примеров ввода и вывода. Без этого нам практически невозможно вам помочь.
5. (Как я спрашивал ранее:) Каков ваш ожидаемый результат для
bar
vsor
? Если вы хотите получить ответ на свой вопрос, пожалуйста, помогите нам уточнить, чего вы хотите.
Ответ №1:
Если вы хотите знать символы, которые находятся в одной позиции:
def alike(string, other)
a = string.split(//)
b = other.split(//)
a.zip(b).map { |x, y| x if x == y }.compact
end
puts alike('latte', 'caffe') # => [a, e]
puts alike('foo', 'bar') # => []
Если вы хотите получить количество совпадающих позиций:
def alike(string, other)
a = string.split(//)
b = other.split(//)
a.zip(b).count { |x, y| x == y }
end
puts alike('latte', 'caffe') # => 2
puts alike('foo', 'bar') # => 0
Комментарии:
1. а что, если мне нужно n номеров строк для сравнения!!
2. Затем вам все равно нужно проверять каждую комбинацию из двух слов. Но вы не указали в своем вопросе, что хотите сравнить более двух слов. Возможно, вам следует добавить это к вашему вопросу…