ocaml: phase 5.1 partition_count.ml baseline (p(15) = 176)
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
Counts integer partitions via classic DP:
let partition_count n =
let dp = Array.make (n + 1) 0 in
dp.(0) <- 1;
for k = 1 to n do
for i = k to n do
dp.(i) <- dp.(i) + dp.(i - k)
done
done;
dp.(n)
partition_count 15 = 176
Tests Array.make, .(i)<-/.(i) array access, nested for-loops, refs.
135 baseline programs total.
This commit is contained in:
@@ -95,6 +95,7 @@
|
|||||||
"palindrome_sum.ml": 49500,
|
"palindrome_sum.ml": 49500,
|
||||||
"paren_depth.ml": 7,
|
"paren_depth.ml": 7,
|
||||||
"partition.ml": 3025,
|
"partition.ml": 3025,
|
||||||
|
"partition_count.ml": 176,
|
||||||
"pancake_sort.ml": 910,
|
"pancake_sort.ml": 910,
|
||||||
"pascal.ml": 252,
|
"pascal.ml": 252,
|
||||||
"peano.ml": 30,
|
"peano.ml": 30,
|
||||||
|
|||||||
13
lib/ocaml/baseline/partition_count.ml
Normal file
13
lib/ocaml/baseline/partition_count.ml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
let partition_count n =
|
||||||
|
let dp = Array.make (n + 1) 0 in
|
||||||
|
dp.(0) <- 1;
|
||||||
|
for k = 1 to n do
|
||||||
|
for i = k to n do
|
||||||
|
dp.(i) <- dp.(i) + dp.(i - k)
|
||||||
|
done
|
||||||
|
done;
|
||||||
|
dp.(n)
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
partition_count 15
|
||||||
@@ -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-10 Phase 5.1 — partition_count.ml baseline (number of
|
||||||
|
integer partitions of 15 = 176). Classic DP: dp[0] = 1; for each
|
||||||
|
k from 1..n, for each i from k..n, dp[i] += dp[i - k]. O(n²) time,
|
||||||
|
O(n) space. p(15) = 176 partitions of 15. Tests Array.make, array
|
||||||
|
set/get with `.(i)<-` / `.(i)`, nested for-loops, ref deref.
|
||||||
|
135 baseline programs total.
|
||||||
- 2026-05-10 Phase 5.1 — pythagorean.ml baseline (count primitive
|
- 2026-05-10 Phase 5.1 — pythagorean.ml baseline (count primitive
|
||||||
Pythagorean triples with hypotenuse ≤ 100 = 16). Uses Euclid's
|
Pythagorean triples with hypotenuse ≤ 100 = 16). Uses Euclid's
|
||||||
formula: for coprime m > k of opposite parity, the triple
|
formula: for coprime m > k of opposite parity, the triple
|
||||||
|
|||||||
Reference in New Issue
Block a user