Class: DivergenceMeter::LevenshteinDistance

Inherits:
Object
  • Object
show all
Defined in:
lib/divergence_meter/levenshtein_distance.rb

Overview

algorithm for levenshtein distance class.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.run(word1, word2) ⇒ Fixnum

calculate levenshetein distance short cut method.

Parameters:

  • word1 (String)

    word1

  • word2 (String)

    word2

Returns:

  • (Fixnum)

    distance



8
9
10
# File 'lib/divergence_meter/levenshtein_distance.rb', line 8

def self.run(word1, word2)
  new.run(word1, word2)
end

Instance Method Details

#run(word1, word2) ⇒ Fixnum

calculate levenshetein distance

Parameters:

  • word1 (String)

    word1

  • word2 (String)

    word2

Returns:

  • (Fixnum)

    distance



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/divergence_meter/levenshtein_distance.rb', line 16

def run(word1, word2)
  list = create_list(word1.size, word2.size)

  1.upto(word1.size) do |n|
    1.upto(word2.size) do |m|
      list[n][m] = [
        list[n - 1][m] + 1,
        list[n][m - 1] + 1,
        list[n - 1][m - 1] + cost(word1[n - 1], word2[m - 1])
      ].min
    end
  end

  list[word1.size][word2.size]
end