ocaml: phase 5.1 min_jumps.ml baseline (greedy BFS-like min jumps = 4)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 26s

Greedy BFS-frontier style — track the farthest reach within the
current jump's reachable range, and bump the jump counter when i
runs into the current frontier:

  while !i < n - 1 do
    farthest := max(farthest, i + arr.(i));
    if !i = !cur_end then begin
      jumps := !jumps + 1;
      cur_end := !farthest
    end;
    i := !i + 1
  done

For [2; 3; 1; 1; 2; 4; 2; 0; 1; 1] (n = 10), the optimal jump
sequence 0 -> 1 -> 4 -> 5 -> 9 uses 4 jumps.

Tests greedy-with-frontier pattern, three parallel refs
(jumps, cur_end, farthest), mixed for-style index loop using ref.

201 baseline programs total.
This commit is contained in:
2026-05-11 05:34:46 +00:00
parent fad81e0b0c
commit c8327823ee
3 changed files with 31 additions and 0 deletions

View File

@@ -129,6 +129,7 @@
"merge_sort.ml": 44,
"merge_two.ml": 441,
"min_cost_path.ml": 12,
"min_jumps.ml": 4,
"min_subarr_target.ml": 2,
"module_use.ml": 3,
"monotonic.ml": 4,

View File

@@ -0,0 +1,22 @@
let min_jumps arr =
let n = Array.length arr in
if n <= 1 then 0
else begin
let jumps = ref 0 in
let cur_end = ref 0 in
let farthest = ref 0 in
let i = ref 0 in
while !i < n - 1 do
if !i + arr.(!i) > !farthest then farthest := !i + arr.(!i);
if !i = !cur_end then begin
jumps := !jumps + 1;
cur_end := !farthest
end;
i := !i + 1
done;
!jumps
end
;;
min_jumps [| 2; 3; 1; 1; 2; 4; 2; 0; 1; 1 |]

View File

@@ -407,6 +407,14 @@ _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-11 Phase 5.1 — min_jumps.ml baseline (greedy BFS-like
min jumps to reach end of [2;3;1;1;2;4;2;0;1;1] = 4). At each
position track the farthest reach within the current "BFS
layer"; when i reaches the layer end, bump jumps and extend to
farthest. Optimal jump sequence 0→1→4→5→9 = 4 jumps. Tests
greedy-with-frontier idiom, three parallel refs (jumps, cur_end,
farthest), mixed for-style index loop using ref. 201 baseline
programs total.
- 2026-05-11 Phase 5.1 — combinations.ml baseline (C(9, 4) = 126
enumerated). Pascal-style recursive split: with first element h,
combinations either include h (recurse with k1 on rest) or