42 lines
1.2 KiB
Plaintext
42 lines
1.2 KiB
Plaintext
Procedure.s getCode(c.s)
|
|
Protected getCode.s = ""
|
|
|
|
If FindString("BFPV", c ,1) : getCode = "1" : EndIf
|
|
If FindString("CGJKQSXZ", c ,1) : getCode = "2" : EndIf
|
|
If FindString("DT", c ,1) : getCode = "3" : EndIf
|
|
If "L" = c : getCode = "4" : EndIf
|
|
If FindString("MN", c ,1) : getCode = "5" : EndIf
|
|
If "R" = c : getCode = "6" : EndIf
|
|
If FindString("HW", c ,1) : getCode = "." : EndIf
|
|
ProcedureReturn getCode
|
|
EndProcedure
|
|
|
|
Procedure.s soundex(word.s)
|
|
Protected.s previous.s = "" , code.s , current , soundex
|
|
Protected.i i
|
|
|
|
word = UCase(word)
|
|
code = Mid(word,1,1)
|
|
previous = ""
|
|
For i = 2 To (Len(word) + 1)
|
|
current = getCode(Mid(word, i, 1))
|
|
If current = "." : Continue : EndIf
|
|
If Len(current) > 0 And current <> previous
|
|
code + current
|
|
EndIf
|
|
previous = current
|
|
If Len(code) = 4
|
|
Break
|
|
EndIf
|
|
Next
|
|
If Len(code) < 4
|
|
code = LSet(code, 4,"0")
|
|
EndIf
|
|
ProcedureReturn code
|
|
EndProcedure
|
|
|
|
OpenConsole()
|
|
|
|
PrintN (soundex("Lukasiewicz"))
|
|
PrintN("Press any key to exit"): Repeat: Until Inkey() <> ""
|