June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
50
Task/Soundex/Julia/soundex.julia
Normal file
50
Task/Soundex/Julia/soundex.julia
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
using Soundex
|
||||
@assert soundex("Ashcroft") == "A261" # true
|
||||
|
||||
# Too trivial? OK. Here is an example not using a package:
|
||||
function soundex(s)
|
||||
char2num = Dict('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 = replace(s, r"[^a-zA-Z]", "")
|
||||
if s == ""
|
||||
return ""
|
||||
end
|
||||
ret = "$(uppercase(s[1]))"
|
||||
hadvowel = false
|
||||
lastletternum = haskey(char2num, ret[1]) ? char2num[ret[1]] : ""
|
||||
for c in s[2:end]
|
||||
c = uppercase(c)
|
||||
if haskey(char2num, c)
|
||||
letternum = char2num[c]
|
||||
if letternum != lastletternum || hadvowel
|
||||
ret = "$ret$letternum"
|
||||
lastletternum = letternum
|
||||
hadvowel = false
|
||||
end
|
||||
elseif c in ('A', 'E', 'I', 'O', 'U', 'Y')
|
||||
hadvowel = true
|
||||
end
|
||||
end
|
||||
while length(ret) < 4
|
||||
ret *= "0"
|
||||
end
|
||||
ret[1:4]
|
||||
end
|
||||
@assert soundex("Ascroft") == "A261"
|
||||
@assert soundex("Euler") == "E460"
|
||||
@assert soundex("Gausss") == "G200"
|
||||
@assert soundex("Hilbert") == "H416"
|
||||
@assert soundex("Knuth") == "K530"
|
||||
@assert soundex("Lloyd") == "L300"
|
||||
@assert soundex("Lukasiewicz") == "L222"
|
||||
@assert soundex("Ellery") == "E460"
|
||||
@assert soundex("Ghosh") == "G200"
|
||||
@assert soundex("Heilbronn") == "H416"
|
||||
@assert soundex("Kant") == "K530"
|
||||
@assert soundex("Ladd") == "L300"
|
||||
@assert soundex("Lissajous") == "L222"
|
||||
@assert soundex("Wheaton") == "W350"
|
||||
@assert soundex("Ashcraft") == "A261"
|
||||
@assert soundex("Burroughs") == "B620"
|
||||
@assert soundex("Burrows") == "B620"
|
||||
@assert soundex("O'Hara") == "O600"
|
||||
Loading…
Add table
Add a link
Reference in a new issue