Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
35
Task/Soundex/XPL0/soundex.xpl0
Normal file
35
Task/Soundex/XPL0/soundex.xpl0
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
code CrLf=9, Text=12;
|
||||
string 0; \use zero-terminated strings
|
||||
|
||||
func Soundex(S1); \Convert name to Soundex string (e.g: Rubin = R150)
|
||||
char S1;
|
||||
char S2(80), Tbl;
|
||||
int I, J, Char, Dig, Dig0;
|
||||
[ \abcdefghijklmnopqrstuvwxyz
|
||||
Tbl:= "01230120022455012623010202";
|
||||
I:= 0; J:= 0; \convert all letters to digits
|
||||
repeat Char:= S1(I); I:= I+1;
|
||||
if Char>=^A & Char<=^Z then \convert letter to lowercase
|
||||
Char:= Char + $20;
|
||||
if Char>=^a & Char<=^z & \eliminate non letters
|
||||
Char#^h & Char#^w then \eliminate h and w
|
||||
[Dig:= Tbl(Char-^a); \convert letter to digit
|
||||
if Dig#^0 & Dig#Dig0 ! J=0 then \filter out zeros and doubles
|
||||
[S2(J):= Dig; J:= J+1]; \ but always store first digit
|
||||
Dig0:= Dig; \save digit to detect doubles
|
||||
];
|
||||
until S1(I) = 0;
|
||||
while J<4 do [S2(J):= ^0; J:= J+1]; \pad with zeros to get 3 digits
|
||||
S2(0):= S1(0) & ~$20; S2(4):= 0; \insert first letter & terminate
|
||||
return S2; \BEWARE: very temporary string
|
||||
];
|
||||
|
||||
int I, Name;
|
||||
[Name:=["Ashcraft", "Ashcroft", "de la Rosa", "Gauss", "Ghosh", "Heilbronn",
|
||||
"Hilbert", "Knuth", "Lee", "Lloyd", "Moses", "O'Hara", "Pfister",
|
||||
"R2-D2", "Robert", "Rubin", "Rupert", "Tymczak", "Soundex", "Example"];
|
||||
for I:= 0 to 20-1 do
|
||||
[Text(0, Soundex(Name(I))); Text(0, " ");
|
||||
Text(0, Name(I)); CrLf(0);
|
||||
];
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue