Jump to content

Anagrams: Difference between revisions

Line 371:
{{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}}
</lang>
 
=={{header|OCaml}}==
<lang ocaml>let explode str =
let l = ref [] in
let len = String.length str in
for i = len - 1 downto 0 do
l := str.[i] :: !l
done;
(!l)
 
let implode li =
let len = List.length li in
let s = String.create len in
ignore(
List.fold_left (fun i c ->
s.[i] <- c; succ i
) 0 li);
(s)
 
let () =
let h = Hashtbl.create 3571 in
let ic = open_in "unixdict.txt" in
try while true do
let w = input_line ic in
let k = implode(List.sort compare (explode w)) in
let l =
try Hashtbl.find h k
with Not_found -> []
in
Hashtbl.add h k (w::l);
done with End_of_file -> ();
let n = Hashtbl.fold (fun _ lw n -> max n (List.length lw)) h 0 in
Hashtbl.iter (fun _ lw ->
if List.length lw >= n then
( List.iter (Printf.printf " %s") lw;
print_newline())
) h;
;;</lang>
 
=={{header|Perl}}==
Cookies help us deliver our services. By using our services, you agree to our use of cookies.