Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 23s
Standard two-finger merge with nested match-in-match:
let rec merge xs ys =
match xs with
| [] -> ys
| x :: xs' ->
match ys with
| [] -> xs
| y :: ys' ->
if x <= y then x :: merge xs' (y :: ys')
else y :: merge (x :: xs') ys'
Used as a building block in merge_sort.ml (iter 104) but called out
as its own baseline here.
merge [1;4;7;10] [2;3;5;8;9] = [1;2;3;4;5;7;8;9;10]
length 9, sum 49, product 441.
85 baseline programs total.
15 lines
293 B
OCaml
15 lines
293 B
OCaml
let rec merge xs ys =
|
|
match xs with
|
|
| [] -> ys
|
|
| x :: xs' ->
|
|
match ys with
|
|
| [] -> xs
|
|
| y :: ys' ->
|
|
if x <= y then x :: merge xs' (y :: ys')
|
|
else y :: merge (x :: xs') ys'
|
|
|
|
;;
|
|
|
|
let m = merge [1; 4; 7; 10] [2; 3; 5; 8; 9] in
|
|
List.fold_left (+) 0 m * List.length m
|