Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
26
Task/Floyds-triangle/OCaml/floyds-triangle.ocaml
Normal file
26
Task/Floyds-triangle/OCaml/floyds-triangle.ocaml
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
let ( |> ) f g x = g (f x)
|
||||
let rec last = function x::[] -> x | _::tl -> last tl | [] -> raise Not_found
|
||||
let rec list_map2 f l1 l2 =
|
||||
match (l1, l2) with
|
||||
| ([], _) | (_, []) -> []
|
||||
| (x::xs, y::ys) -> (f x y) :: list_map2 f xs ys
|
||||
|
||||
let floyd n =
|
||||
let rec aux acc cur len i j =
|
||||
if (List.length acc) = n then (List.rev acc) else
|
||||
if j = len
|
||||
then aux ((List.rev cur)::acc) [] (succ len) i 0
|
||||
else aux acc (i::cur) len (succ i) (succ j)
|
||||
in
|
||||
aux [] [] 1 1 0
|
||||
|
||||
let print_floyd f =
|
||||
let lens = List.map (string_of_int |> String.length) (last f) in
|
||||
List.iter (fun row ->
|
||||
print_endline (
|
||||
String.concat " " (
|
||||
list_map2 (Printf.sprintf "%*d") lens row))
|
||||
) f
|
||||
|
||||
let () =
|
||||
print_floyd (floyd (int_of_string Sys.argv.(1)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue