ocaml: phase 5.1 max_path_tree.ml baseline (max root-to-leaf sum, 1+3+7 = 11)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 22s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 22s
Recursive ADT for binary trees:
type tree = Leaf | Node of int * tree * tree
let rec max_path t =
match t with
| Leaf -> 0
| Node (v, l, r) ->
let lp = max_path l in
let rp = max_path r in
v + (if lp > rp then lp else rp)
For the test tree:
1
/ 2 3
/ \ \
4 5 7
paths sum: 1+2+4=7, 1+2+5=8, 1+3+7=11. max = 11.
Tests 3-arg Node constructor with positional arg destructuring, two
nested let-bindings, and if-then-else as an inline expression.
73 baseline programs total.
This commit is contained in:
@@ -36,6 +36,7 @@
|
|||||||
"flatten_tree.ml": 28,
|
"flatten_tree.ml": 28,
|
||||||
"list_ops.ml": 30,
|
"list_ops.ml": 30,
|
||||||
"mat_mul.ml": 621,
|
"mat_mul.ml": 621,
|
||||||
|
"max_path_tree.ml": 11,
|
||||||
"mod_inverse.ml": 27,
|
"mod_inverse.ml": 27,
|
||||||
"json_pretty.ml": 24,
|
"json_pretty.ml": 24,
|
||||||
"kadane.ml": 6,
|
"kadane.ml": 6,
|
||||||
|
|||||||
21
lib/ocaml/baseline/max_path_tree.ml
Normal file
21
lib/ocaml/baseline/max_path_tree.ml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
type tree = Leaf | Node of int * tree * tree
|
||||||
|
|
||||||
|
let rec max_path t =
|
||||||
|
match t with
|
||||||
|
| Leaf -> 0
|
||||||
|
| Node (v, l, r) ->
|
||||||
|
let lp = max_path l in
|
||||||
|
let rp = max_path r in
|
||||||
|
v + (if lp > rp then lp else rp)
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
let t = Node (1,
|
||||||
|
Node (2,
|
||||||
|
Node (4, Leaf, Leaf),
|
||||||
|
Node (5, Leaf, Leaf)),
|
||||||
|
Node (3,
|
||||||
|
Leaf,
|
||||||
|
Node (7, Leaf, Leaf)))
|
||||||
|
in
|
||||||
|
max_path t
|
||||||
@@ -407,6 +407,13 @@ _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 — max_path_tree.ml baseline (max root-to-leaf
|
||||||
|
sum in a binary tree, 1+3+7 = 11). Recursive ADT `tree = Leaf |
|
||||||
|
Node of int * tree * tree`. max_path returns 0 at Leaf, else
|
||||||
|
v + max(left subtree, right subtree). Tree has 6 nodes; the
|
||||||
|
rightmost path 1→3→7 maximises at 11. Tests 3-arg `Node`
|
||||||
|
constructor with positional arg destructuring + nested let-binding
|
||||||
|
+ if-then-else as expression. 73 baseline programs total.
|
||||||
- 2026-05-09 Phase 5.1 — mod_inverse.ml baseline (extended Euclidean
|
- 2026-05-09 Phase 5.1 — mod_inverse.ml baseline (extended Euclidean
|
||||||
+ modular inverse, sum 4+21+2 = 27). ext_gcd returns a triple
|
+ modular inverse, sum 4+21+2 = 27). ext_gcd returns a triple
|
||||||
(gcd, x, y) such that ax + by = gcd. mod_inverse extracts x and
|
(gcd, x, y) such that ax + by = gcd. mod_inverse extracts x and
|
||||||
|
|||||||
Reference in New Issue
Block a user