All pastes #499723 Raw Edit

Levenshtein

public text v1 · immutable
·published 2007-05-21 06:31 UTC
rendered paste body
alias LevDist {
  var %s = $1, %t = $2, %m = $len(%s), %n = $len(%t)
  var %i = 0
  while (%x <= %m) {
    var $+(%,%i,.,0) = %i
    inc %i
  }
  var %j = 1
  while (%j <= %n) {
    var $+(%,0,.,%j) = %j
    inc %j
  }
  var %i = 1
  while (%i <= %m) {
    var %j = 1
    while (%j <= %n) {
      if ($mid(%s,%i,1) == $mid(%t,%j,1)) var %cost = 0
      else %cost = 1
      var $+(%,%i,.,%j) = $gettok($sorttok($calc($($+(%,$calc(%i - 1),.,%j),2) + 1) $calc($($+(%,%i,.,$calc(%j - 1)),2) + 1) $calc($($+(%,$calc(%i - 1),.,$calc(%j - 1)),2) + %cost),32,n),1,32)
      inc %j
    }
    inc %i
  }
  return $($+(%,%m,.,%n),2)
}