ocaml: phase 5.1 triangle_div.ml baseline (first triangle with >10 divisors = 120)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 37s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 37s
PE12 with target = 10:
let count_divisors n =
let c = ref 0 in
let i = ref 1 in
while !i * !i <= n do
if n mod !i = 0 then begin
c := !c + 1;
if !i * !i <> n then c := !c + 1
end;
i := !i + 1
done;
!c
let first_triangle_with_divs target =
walk triangles T(n) = T(n-1) + n until count_divisors T > target
T(15) = 120 has 16 divisors — first to exceed 10. Real PE12 uses
target 500 (answer 76576500); 10 stays well under budget.
126 baseline programs total.
This commit is contained in:
@@ -122,6 +122,7 @@
|
|||||||
"sum_squares.ml": 385,
|
"sum_squares.ml": 385,
|
||||||
"tree_depth.ml": 4,
|
"tree_depth.ml": 4,
|
||||||
"triangle.ml": 11,
|
"triangle.ml": 11,
|
||||||
|
"triangle_div.ml": 120,
|
||||||
"twosum.ml": 5,
|
"twosum.ml": 5,
|
||||||
"unique_set.ml": 9,
|
"unique_set.ml": 9,
|
||||||
"validate.ml": 417,
|
"validate.ml": 417,
|
||||||
|
|||||||
26
lib/ocaml/baseline/triangle_div.ml
Normal file
26
lib/ocaml/baseline/triangle_div.ml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
let count_divisors n =
|
||||||
|
let c = ref 0 in
|
||||||
|
let i = ref 1 in
|
||||||
|
while !i * !i <= n do
|
||||||
|
if n mod !i = 0 then begin
|
||||||
|
c := !c + 1;
|
||||||
|
if !i * !i <> n then c := !c + 1
|
||||||
|
end;
|
||||||
|
i := !i + 1
|
||||||
|
done;
|
||||||
|
!c
|
||||||
|
|
||||||
|
let first_triangle_with_divs target =
|
||||||
|
let t = ref 0 in
|
||||||
|
let n = ref 0 in
|
||||||
|
let found = ref false in
|
||||||
|
while not !found do
|
||||||
|
n := !n + 1;
|
||||||
|
t := !t + !n;
|
||||||
|
if count_divisors !t > target then found := true
|
||||||
|
done;
|
||||||
|
!t
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
first_triangle_with_divs 10
|
||||||
@@ -407,6 +407,11 @@ _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 — triangle_div.ml baseline (first triangle
|
||||||
|
number with > 10 divisors = 120). PE12 with target 10. T(15) = 120
|
||||||
|
has 16 divisors {1,2,3,4,5,6,8,10,12,15,20,24,30,40,60,120} —
|
||||||
|
first to break 10. Real PE12 uses target 500 (answer 76576500);
|
||||||
|
10 stays well under our budget. 126 baseline programs total.
|
||||||
- 2026-05-10 Phase 5.1 — perfect.ml baseline (count perfect numbers
|
- 2026-05-10 Phase 5.1 — perfect.ml baseline (count perfect numbers
|
||||||
≤ 500 = 3). Perfect numbers = those where d(n) = n. Three under
|
≤ 500 = 3). Perfect numbers = those where d(n) = n. Three under
|
||||||
500: 6, 28, 496. (8128 is the next.) Same div_sum machinery as
|
500: 6, 28, 496. (8128 is the next.) Same div_sum machinery as
|
||||||
|
|||||||
Reference in New Issue
Block a user