ocaml: phase 5.1 merge_two.ml baseline (merge two sorted lists, length*sum = 441)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 23s
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.
This commit is contained in:
@@ -48,6 +48,7 @@
|
|||||||
"memo_fib.ml": 75025,
|
"memo_fib.ml": 75025,
|
||||||
"mortgage.ml": 1073,
|
"mortgage.ml": 1073,
|
||||||
"merge_sort.ml": 44,
|
"merge_sort.ml": 44,
|
||||||
|
"merge_two.ml": 441,
|
||||||
"module_use.ml": 3,
|
"module_use.ml": 3,
|
||||||
"newton_sqrt.ml": 1414,
|
"newton_sqrt.ml": 1414,
|
||||||
"mutable_record.ml": 10,
|
"mutable_record.ml": 10,
|
||||||
|
|||||||
14
lib/ocaml/baseline/merge_two.ml
Normal file
14
lib/ocaml/baseline/merge_two.ml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
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
|
||||||
@@ -407,6 +407,12 @@ _Newest first._
|
|||||||
binary search tree (`type 'a tree = Leaf | Node of 'a * 'a tree *
|
binary search tree (`type 'a tree = Leaf | Node of 'a * 'a tree *
|
||||||
'a tree`) with insert + in-order traversal. Tests parametric ADT,
|
'a tree`) with insert + in-order traversal. Tests parametric ADT,
|
||||||
recursive match, List.append, List.fold_left.
|
recursive match, List.append, List.fold_left.
|
||||||
|
- 2026-05-09 Phase 5.1 — merge_two.ml baseline (merge two sorted
|
||||||
|
lists, length*sum = 9*49 = 441). Standard two-finger merge with
|
||||||
|
nested match-in-match. Used as a building block in merge_sort.ml
|
||||||
|
(iter 104) but called out as its own baseline here. Tests two-arg
|
||||||
|
recursion + nested match dispatch + classic comparison-based
|
||||||
|
merge. 85 baseline programs total.
|
||||||
- 2026-05-09 Phase 5.1 — pow_mod.ml baseline (fast modular
|
- 2026-05-09 Phase 5.1 — pow_mod.ml baseline (fast modular
|
||||||
exponentiation, sum 738639). Recursive exponentiation by squaring:
|
exponentiation, sum 738639). Recursive exponentiation by squaring:
|
||||||
even exponent halves and squares, odd exponent multiplies by base
|
even exponent halves and squares, odd exponent multiplies by base
|
||||||
|
|||||||
Reference in New Issue
Block a user