Как проверить, насколько строки похожи в Ruby

#ruby

#ruby

Вопрос:

Я должен проверить, насколько, например:

caffe и latte похожи, поэтому a и e похожи, поэтому 2/5 букв похожи, a и e .

например

 val1 = "caffe"
val2 = "latte"
  

два входных

и теперь выводятся «a» и «e»

Комментарии:

1. Каков ваш ожидаемый результат для bar vs or ?

2. просто хочет напечатать похожее слово!!

3. Вы можете либо реализовать, либо найти готовую реализацию расстояния Левенштейна , если хотите иметь четко определенный способ проверки сходства строк.

4. Очень сложно понять, что вам нужно. Чтобы увеличить ваши шансы на получение осмысленного ответа, пожалуйста, пишите четко, очень точно и явно указывайте формат ввода и вывода, приводите много примеров ввода и вывода. Без этого нам практически невозможно вам помочь.

5. (Как я спрашивал ранее:) Каков ваш ожидаемый результат для bar vs or ? Если вы хотите получить ответ на свой вопрос, пожалуйста, помогите нам уточнить, чего вы хотите.

Ответ №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. Затем вам все равно нужно проверять каждую комбинацию из двух слов. Но вы не указали в своем вопросе, что хотите сравнить более двух слов. Возможно, вам следует добавить это к вашему вопросу…