Levenshtein distance
Compute distance for each pair. Notice that this recursive implementation is very inefficient. Wagner-Fischer algorithm is iterative and much faster. #vimscript
" Levenshtein distance between two strings
function! LD(s1, s2)
let l1 = strlen(a:s1)
let l2 = strlen(a:s2)
if l1 <= 0
return l2
elseif l2 <= 0
return l1
elseif a:s1[0] ==# a:s2[0]
return LD(a:s1[1:], a:s2[1:])
else
return 1 + min([
\ LD(a:s1, a:s2[1:]), LD(a:s1[1:], a:s2), LD(a:s1[1:], a:s2[1:])
\ ])
endif
endfunction
" Humm... Is this useful?
"nmap M I=LD("a","b")
"VIM VimGolf
"keystroke matt
"vimscript way
"reformat refactor
"challenge chatter
"colons semicolons
"golfer golfers
"order sorting
"modules models
"shift+ret ctrl+ret
"ninja manic
"destination distance
"pattern lines
"linewrapping linewrapping
"swap switch
"vice versa
"split multiples
"block blackened
"-a-b-c c-a-b
"hello_world hello world!
6 8 9 5 5 4 1 5 2 5 4 7 6 0 4 4 7 5 3 2