Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
53
Task/Anagrams/GAP/anagrams.gap
Normal file
53
Task/Anagrams/GAP/anagrams.gap
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
Anagrams := function(name)
|
||||
local f, p, L, line, word, words, swords, res, cur, r;
|
||||
words := [ ];
|
||||
swords := [ ];
|
||||
f := InputTextFile(name);
|
||||
while true do
|
||||
line := ReadLine(f);
|
||||
if line = fail then
|
||||
break;
|
||||
else
|
||||
word := Chomp(line);
|
||||
Add(words, word);
|
||||
Add(swords, SortedList(word));
|
||||
fi;
|
||||
od;
|
||||
CloseStream(f);
|
||||
p := SortingPerm(swords);
|
||||
L := Permuted(words, p);
|
||||
r := "";
|
||||
cur := [ ];
|
||||
res := [ ];
|
||||
for word in L do
|
||||
if SortedList(word) = r then
|
||||
Add(cur, word);
|
||||
else
|
||||
if Length(cur) > 0 then
|
||||
Add(res, cur);
|
||||
fi;
|
||||
r := SortedList(word);
|
||||
cur := [ word ];
|
||||
fi;
|
||||
od;
|
||||
if Length(cur) > 0 then
|
||||
Add(res, cur);
|
||||
fi;
|
||||
return Filtered(res, v -> Length(v) > 1);
|
||||
end;
|
||||
|
||||
|
||||
ana := Anagrams("my/gap/unixdict.txt");;
|
||||
|
||||
# What is the longest anagram sequence ?
|
||||
Maximum(List(ana, Length));
|
||||
# 5
|
||||
|
||||
# Which are they ?
|
||||
Filtered(ana, v -> Length(v) = 5);
|
||||
# [ [ "abel", "able", "bale", "bela", "elba" ],
|
||||
# [ "caret", "carte", "cater", "crate", "trace" ],
|
||||
# [ "angel", "angle", "galen", "glean", "lange" ],
|
||||
# [ "alger", "glare", "lager", "large", "regal" ],
|
||||
# [ "elan", "lane", "lean", "lena", "neal" ],
|
||||
# [ "evil", "levi", "live", "veil", "vile" ] ]
|
||||
Loading…
Add table
Add a link
Reference in a new issue