Реализации алгоритмов/Расстояние Левенштейна: различия между версиями
Содержимое удалено Содержимое добавлено
Oleg4280 (обсуждение | вклад) == См. также == * Реализации алгоритмов/Редакционное предписание |
добавлена реализация на языке Scala |
||
Строка 246:
}
</source>
== [[w:Scala|Scala]] ==
<source lang="Scala">
class Lowenstein(s1: String, s2: String) {
private val m: Int = s1.length
private val n: Int = s2.length
private val matrix = Array.ofDim[Int](m + 1, n + 1)
private val distance: Int = {
def mo(i: Int, j: Int): Int = if (s1(i) == s2(j)) 0 else 1
def min(numbers: Int*): Int = numbers.min
for (i <- 0 to m) matrix(i)(0) = i
for (i <- 1 to n) matrix(0)(i) = i
for (i <- 1 to m; j <- 1 to n) {
matrix(i)(j) = min(
matrix(i - 1)(j) + 1,
matrix(i)(j - 1) + 1,
matrix(i - 1)(j - 1) + mo(i - 1, j - 1)
)
}
matrix(m)(n)
}
def getDistance = distance
}
</source>
пример использования:
<source lang="Scala">
println( new Lowenstein("Hi, men!", "Hi, women!").getDistance )
</source>
|