123456789101112131415161718192021 |
- #!/usr/bin/ruby
- #
- ## https://rosettacode.org/wiki/Levenshtein_distance
- #
- func lev(s, t) {
- var d = [@(0 .. t.len), s.len.of {[_]}...]
- for i,j in (^s ~X ^t) {
- d[i+1][j+1] = (
- s[i] == t[j]
- ? d[i][j]
- : 1+Math.min(d[i][j+1], d[i+1][j], d[i][j])
- )
- }
- d[-1][-1]
- }
- say lev(%c'kitten', %c'sitting'); # prints: 3
- say lev(%c'rosettacode', %c'raisethysword'); # prints: 8
|