ocaml: phase 5.1 grid_paths.ml baseline (count paths in 4x6 grid = 210)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 25s

DP filling a flattened 2D array:

  dp.(0, 0)         = 1
  dp.(i, j)         = dp.(i-1, j) + dp.(i, j-1)
  index             = i * (n+1) + j

For a 4x6 grid (5x7 dp matrix), the count is C(10, 4) = 210.

Tests Array as 2D via row-major flatten + nested for + multi-step
conditional access (above/left guarded by 'if i > 0' / 'if j > 0').

87 baseline programs total.
This commit is contained in:
2026-05-09 17:45:52 +00:00
parent f1df5b1b72
commit 4eeb7e59b4
3 changed files with 24 additions and 0 deletions

View File

@@ -31,6 +31,7 @@
"frequency.ml": 5,
"gcd_lcm.ml": 60,
"grep_count.ml": 3,
"grid_paths.ml": 210,
"group_consec.ml": 53,
"hailstone.ml": 111,
"hanoi.ml": 1023,

View File

@@ -0,0 +1,17 @@
let count_paths m n =
let dp = Array.make ((m + 1) * (n + 1)) 0 in
dp.(0) <- 1;
for i = 0 to m do
for j = 0 to n do
if i > 0 || j > 0 then begin
let above = if i > 0 then dp.((i - 1) * (n + 1) + j) else 0 in
let left = if j > 0 then dp.(i * (n + 1) + j - 1) else 0 in
dp.(i * (n + 1) + j) <- above + left
end
done
done;
dp.(m * (n + 1) + n)
;;
count_paths 4 6