50 lines
1.9 KiB
Text
50 lines
1.9 KiB
Text
constant states = {"Alabama", "Alaska", "Arizona", "Arkansas",
|
|
"California", "Colorado", "Connecticut", "Delaware",
|
|
"Florida", "Georgia", "Hawaii", "Idaho", "Illinois",
|
|
"Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana",
|
|
"Maine", "Maryland", "Massachusetts", "Michigan",
|
|
"Minnesota", "Mississippi", "Missouri", "Montana",
|
|
"Nebraska", "Nevada", "New Hampshire", "New Jersey",
|
|
"New Mexico", "New York", "North Carolina", "North Dakota",
|
|
"Ohio", "Oklahoma", "Oregon", "Pennsylvania",
|
|
"Rhode Island", "South Carolina", "South Dakota",
|
|
"Tennessee", "Texas", "Utah", "Vermont", "Virginia",
|
|
"Washington", "West Virginia", "Wisconsin", "Wyoming"},
|
|
-- extras = {"New Kory", "Wen Kory", "York New", "Kory New", "New Kory"}
|
|
extras = {"Slender Dragon", "Abalamara"}
|
|
|
|
function no_dup(sequence s)
|
|
s = sort(s)
|
|
for i=length(s) to 2 by -1 do
|
|
if s[i]=s[i-1] then
|
|
s[i] = s[$]
|
|
s = s[1..$-1]
|
|
end if
|
|
end for
|
|
return s
|
|
end function
|
|
|
|
procedure play(sequence s)
|
|
s = no_dup(s)
|
|
destroy_dict(1) -- empty dict
|
|
for i=1 to length(s)-1 do
|
|
for j=i+1 to length(s) do
|
|
string key = trim(sort(lower(s[i]&s[j])))
|
|
object data = getd(key)
|
|
if data=0 then
|
|
putd(key,{{i,j}})
|
|
else
|
|
for k=1 to length(data) do
|
|
integer {m,n} = data[k]
|
|
if m!=i and m!=j and n!=i and n!=j then
|
|
?{s[i],s[j],"<==>",s[m],s[n]}
|
|
end if
|
|
end for
|
|
putd(key,append(data,{i,j}))
|
|
end if
|
|
end for
|
|
end for
|
|
end procedure
|
|
play(states)
|
|
?"==="
|
|
play(states&extras)
|