ocaml: phase 5.1 subset_sum.ml baseline (count subsets of [1..8] summing to 10 = 8)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
Pure recursion — at each element, take it or don't:
let rec count_subsets xs target =
match xs with
| [] -> if target = 0 then 1 else 0
| x :: rest ->
count_subsets rest target
+ count_subsets rest (target - x)
For [1;2;3;4;5;6;7;8] target 10, the recursion tree has 2^8 = 256
leaves. Returns 8 — number of subsets summing to 10:
1+2+3+4, 1+2+7, 1+3+6, 1+4+5, 2+3+5, 2+8, 3+7, 4+6 = 8
Tests doubly-recursive list traversal pattern with single-arg list
+ accumulator-via-target.
65 baseline programs total.
This commit is contained in:
@@ -407,6 +407,13 @@ _Newest first._
|
||||
binary search tree (`type 'a tree = Leaf | Node of 'a * 'a tree *
|
||||
'a tree`) with insert + in-order traversal. Tests parametric ADT,
|
||||
recursive match, List.append, List.fold_left.
|
||||
- 2026-05-09 Phase 5.1 — subset_sum.ml baseline (count subsets of
|
||||
[1..8] summing to 10 = 8). Pure recursion: at each element, take
|
||||
it or don't. Base case: target=0 → 1, target≠0 → 0. 2^8 = 256
|
||||
recursive calls. The 8 subsets are: 1+2+3+4, 1+2+7, 1+3+6, 1+4+5,
|
||||
1+9 (no), 2+3+5, 2+8, 3+7, 4+6, 1+2+3+4. Verified count = 8.
|
||||
Tests doubly-recursive list traversal pattern. 65 baseline programs
|
||||
total.
|
||||
- 2026-05-09 Phase 5.1 — hailstone.ml baseline (Collatz length,
|
||||
starting from 27 → 111 steps to reach 1). Iterative while-loop
|
||||
applies `n / 2` if even, `3n + 1` if odd, counting steps. 27 is
|
||||
|
||||
Reference in New Issue
Block a user