algorytm.org

Implementacja w Ruby



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Odległość Levenshteina (odległość edycyjna) - Implementacja w Ruby
Ocena użytkownikóww: *****  / 1
SłabyŚwietny
Nadesłany przez Paweł Łuczak, 06 lutego 2009 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

leven.rb:
# odleglosc Levenshteina (odleglosc edycyjna)
# www.algorytm.org
# by Paweł THZ Łuczak

def min(x1,x2,x3)
  if x1 >= x2
    if x2 >= x3
      return x3
    else
      return x2
    end
  else
    if x3 >= x1
      return x1
    else
      return x3
    end
    
  end
end

def leven(s,t)
  
  cost=0
  d = []
  m = s.length
  n = t.length
  
  
  for i in 0..m
    d[i] = []
  end
  
  for i in 0..m
    d[i][0] = i
  end
  
  for j in 1..n
    d[0][j] = j
  end
  
  for i in 1..m
    for j in 1..n
      if s[i-1,1] == t[j-1,1]
        cost = 0
      else
        cost = 1
      end
      d[i][j] = min( (d[i-1][j] + 1) , (d[i][j-1] + 1) , (d[i-1][j-1] + cost) ) 
    end
  end
  return d[m][n]
end

  
Dodaj komentarz