RosettaCodeData/Task/Anagrams/Phix/anagrams.phix
2016-12-05 23:44:36 +01:00

40 lines
1.1 KiB
Text

integer fn = open("unixdict.txt","r")
sequence words = {}, anagrams = {}, last="", letters
object word
integer maxlen = 1
while 1 do
word = trim(gets(fn))
if atom(word) then exit end if
if length(word) then
letters = sort(word)
words = append(words, {letters, word})
end if
end while
close(fn)
words = sort(words)
for i=1 to length(words) do
{letters,word} = words[i]
if letters=last then
anagrams[$] = append(anagrams[$],word)
if length(anagrams[$])>maxlen then
maxlen = length(anagrams[$])
end if
else
last = letters
anagrams = append(anagrams,{word})
end if
end for
puts(1,"\nMost anagrams:\n")
for i=1 to length(anagrams) do
last = anagrams[i]
if length(last)=maxlen then
for j=1 to maxlen do
if j>1 then puts(1,", ") end if
puts(1,last[j])
end for
puts(1,"\n")
end if
end for