Anagrams: Difference between revisions

1,107 bytes added ,  2 years ago
(Added Arturo implementation)
Line 6,380:
print_r($ana);
?></lang>
 
=={{header|Picat}}==
Using foreach loop:
<lang Picat>go =>
Dict = new_map(),
foreach(Line in read_file_lines("unixdict.txt"))
Sorted = Line.sort(),
Dict.put(Sorted, Dict.get(Sorted,"") ++ [Line] )
end,
MaxLen = max([Value.length : _Key=Value in Dict]),
println(maxLen=MaxLen),
foreach(_Key=Value in Dict, Value.length == MaxLen)
println(Value)
end,
nl.</lang>
 
Output:
<pre>
maxLen = 5
[alger,glare,lager,large,regal]
[evil,levi,live,veil,vile]
[abel,able,bale,bela,elba]
[caret,carte,cater,crate,trace]
[angel,angle,galen,glean,lange]
[elan,lane,lean,lena,neal]</pre>
 
Same idea, but shorter version by (mis)using list comprehensions.
<lang Picat>go2 =>
M = new_map(),
_ = [_:W in read_file_lines("unixdict.txt"),S=sort(W),M.put(S,M.get(S,"")++[W])],
X = max([V.len : _K=V in M]),
println(maxLen=X),
[V : _=V in M, V.len=X].println.</lang>
 
Output:
 
<pre>
maxLen = 5
[[evil,levi,live,veil,vile],[abel,able,bale,bela,elba],[caret,carte,cater,crate,trace],[angel,angle,galen,glean,lange],[elan,lane,lean,lena,neal],[alger,glare,lager,large,regal]]</pre>
 
=={{header|PicoLisp}}==
495

edits