ocaml: phase 5.1 histogram_area.ml baseline (largest rectangle = 10)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 22s

Linear-time stack algorithm for largest rectangle in histogram:

  for i = 0 to n do
    let h = if i = n then 0 else heights.(i) in
    while top-of-stack's height > h do
      pop the top, compute its max-width rectangle:
        width = (no-stack ? i : i - prev_top - 1)
        area  = height * width
      update best
    done;
    if i < n then push i
  done

Sentinel pass at i=n with h=0 flushes the remaining stack.

For [2; 1; 5; 6; 2; 3], bars at indices 2 (h=5) and 3 (h=6) form
a width-2 rectangle of height 5 = 10.

Tests guarded patterns with `when` inside while-cont-flag, nested
`match !stack with | [] -> i | t :: _ -> i - t - 1` for width
computation.

178 baseline programs total.
This commit is contained in:
2026-05-11 01:42:26 +00:00
parent f9371e7d22
commit 609205b551
3 changed files with 37 additions and 0 deletions

View File

@@ -75,6 +75,7 @@
"hamming.ml": 4,
"hanoi.ml": 1023,
"hist.ml": 75,
"histogram_area.ml": 10,
"huffman.ml": 224,
"int_sqrt.ml": 1027,
"is_prime.ml": 25,