⍝ Levenshtein distance:
'Sunday' dist 'Saturday'
3
'sitting' dist 'kitten'
3
'Dyalog' dist 'Interpreter' ⍝ disjoint vectors
11
mons ← 'January' 'February' 'March' 'April' 'May' 'June'
mons,← 'July' 'August' 'September'
mons,← 'October' 'November' 'December'
∘.dist⍨ mons ⍝ distances
0 4 6 7 5 5 4 6 9 7 8 8
4 0 7 7 6 7 6 7 8 7 8 7
6 7 0 4 3 5 5 6 9 7 8 8
7 7 4 0 5 5 5 5 8 7 8 8
5 6 3 5 0 4 3 6 9 7 8 8
5 7 5 5 4 0 2 5 8 6 7 7
4 6 5 5 3 2 0 5 9 7 8 8
6 7 6 5 6 5 5 0 9 7 8 8
9 8 9 8 9 8 9 9 0 5 4 3
7 7 7 7 7 6 7 7 5 0 5 4
8 8 8 8 8 7 8 8 4 5 0 3
8 7 8 8 8 7 8 8 3 4 3 0
fuzzy←{({⍵⍳⌊/⍵}(lcase ⍺)∘dist∘lcase¨⍵)⊃⍵} ⍝ fuzzy selection
fuzzy∘mons¨ 'dcmbr' 'marching' 'febury' ⍝ fuzzy matches
┌────────┬─────┬────────┐
│December│March│February│
└────────┴─────┴────────┘
⍝∇ dist lcase
Back to: code
Back to: Workspaces