35 lines
770 B
Plaintext
35 lines
770 B
Plaintext
procedure main(args)
|
|
every writeSet(!getLongestAnagramSets())
|
|
end
|
|
|
|
procedure getLongestAnagramSets()
|
|
wordSets := table()
|
|
longestWSet := 0
|
|
longSets := set()
|
|
|
|
every word := !&input do {
|
|
wChars := csort(word)
|
|
/wordSets[wChars] := set()
|
|
insert(wordSets[wChars], word)
|
|
|
|
if 1 < *wordSets[wChars} == longestWSet then
|
|
insert(longSets, wordSets[wChars])
|
|
if 1 < *wordSets[wChars} > longestWSet then {
|
|
longestWSet := *wordSets[wChars}
|
|
longSets := set([wordSets[wChars]])
|
|
}
|
|
}
|
|
|
|
return longSets
|
|
end
|
|
|
|
procedure writeSet(words)
|
|
every writes("\t"|!words," ")
|
|
write()
|
|
end
|
|
|
|
procedure csort(w)
|
|
every (s := "") ||:= (find(c := !cset(w),w),c)
|
|
return s
|
|
end
|