diff --git a/lib/ocaml/baseline/euler6.ml b/lib/ocaml/baseline/euler6.ml new file mode 100644 index 00000000..d8d8cf5c --- /dev/null +++ b/lib/ocaml/baseline/euler6.ml @@ -0,0 +1,12 @@ +let euler6 n = + let sum = ref 0 in + let sum_sq = ref 0 in + for i = 1 to n do + sum := !sum + i; + sum_sq := !sum_sq + i * i + done; + !sum * !sum - !sum_sq + +;; + +euler6 100 diff --git a/lib/ocaml/baseline/expected.json b/lib/ocaml/baseline/expected.json index 146a53ce..5285bebd 100644 --- a/lib/ocaml/baseline/expected.json +++ b/lib/ocaml/baseline/expected.json @@ -26,6 +26,7 @@ "exception_user.ml": 26, "euler1.ml": 233168, "euler2.ml": 4613732, + "euler6.ml": 25164150, "expr_eval.ml": 16, "expr_simp.ml": 22, "factorial.ml": 3628800, diff --git a/plans/ocaml-on-sx.md b/plans/ocaml-on-sx.md index 5596f6bc..253e4b2b 100644 --- a/plans/ocaml-on-sx.md +++ b/plans/ocaml-on-sx.md @@ -407,6 +407,10 @@ _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 — euler6.ml baseline (Project Euler #6, square + of sum minus sum of squares for 1..100 = 25164150). Single for-loop + threading two refs; (sum 1..100)^2 - sum(i^2 for 1..100) = 5050^2 + - 338350 = 25502500 - 338350 = 25164150. 102 baseline programs total. - 2026-05-09 Phase 5.1 — euler2.ml baseline (Project Euler #2, sum of even Fibonacci ≤ 4M = 4613732). Iterative two-ref Fibonacci, accumulating only even terms. Sequence: 1, 2, 3, 5, 8, 13, 21,