ocaml: phase 5.1 pascal.ml baseline (Pascal triangle row 10 middle = C(10,5) = 252)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 27s

next_row prepends 1, walks adjacent pairs (x, y) emitting x+y,
appends a final 1:

  let rec next_row prev =
    let rec aux a =
      match a with
      | [_] -> [1]
      | x :: y :: rest -> (x + y) :: aux (y :: rest)
      | [] -> []
    in
    1 :: aux prev

row n iterates next_row n times starting from [1] using a ref +
'for _ = 1 to n do r := next_row !r done'.

  row 10 = [1;10;45;120;210;252;210;120;45;10;1]
  List.nth (row 10) 5 = 252 = C(10, 5)

Exercises three-arm match including [_] singleton wildcard, x :: y
:: rest binding, and the for-loop with wildcard counter. 45 baseline
programs total.
This commit is contained in:
2026-05-09 09:57:18 +00:00
parent 32aba1823d
commit da6d8e39c9
3 changed files with 27 additions and 0 deletions

View File

@@ -29,6 +29,7 @@
"newton_sqrt.ml": 1414,
"mutable_record.ml": 10,
"option_match.ml": 5,
"pascal.ml": 252,
"pi_leibniz.ml": 314,
"pretty_table.ml": 64,
"poly_stack.ml": 5,

View File

@@ -0,0 +1,19 @@
let rec next_row prev =
let rec aux a =
match a with
| [_] -> [1]
| x :: y :: rest -> (x + y) :: aux (y :: rest)
| [] -> []
in
1 :: aux prev
let row n =
let r = ref [1] in
for _ = 1 to n do
r := next_row !r
done;
!r
;;
List.nth (row 10) 5

View File

@@ -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 — pascal.ml baseline (Pascal's triangle row
10 middle = C(10, 5) = 252). next_row prepends 1, walks adjacent
pairs (x, y) emitting x+y, appends a final 1. row n iterates
next_row n times starting from [1]. Three-arm match including
`[_]` (singleton wildcard) and `x :: y :: rest`. Iteration via
`for _ = 1 to n do r := next_row !r done`. 45 baseline programs
total.
- 2026-05-09 Phase 5.1 — run_length.ml baseline (run-length encoding,
sum of counts = 11). RLE encodes [1;1;1;2;2;3;3;3;3;1;1] as
[(1,3);(2,2);(3,4);(1,2)]. Sum-of-counts = 11 verifies that the