24 lines
579 B
Groovy
24 lines
579 B
Groovy
def soundex(s) {
|
|
def code = ""
|
|
def lookup = [
|
|
B : 1, F : 1, P : 1, V : 1,
|
|
C : 2, G : 2, J : 2, K : 2, Q : 2, S : 2, X : 2, Z : 2,
|
|
D : 3, T : 3,
|
|
L : 4,
|
|
M : 5, N : 5,
|
|
R : 6
|
|
]
|
|
s[1..-1].toUpperCase().inject(7) { lastCode, letter ->
|
|
def letterCode = lookup[letter]
|
|
if(letterCode && letterCode != lastCode) {
|
|
code += letterCode
|
|
}
|
|
}
|
|
return "${s[0]}${code}0000"[0..3]
|
|
}
|
|
|
|
println(soundex("Soundex"))
|
|
println(soundex("Sownteks"))
|
|
println(soundex("Example"))
|
|
println(soundex("Ekzampul"))
|