ocaml: phase 5.1 next_permutation.ml baseline (5! - 1 = 119 successors)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 25s

Standard in-place next-permutation (Narayana's algorithm):

  let next_perm a =
    let n = Array.length a in
    let i = ref (n - 2) in
    while !i >= 0 && a.(!i) >= a.(!i + 1) do i := !i - 1 done;
    if !i < 0 then false
    else begin
      let j = ref (n - 1) in
      while a.(!j) <= a.(!i) do j := !j - 1 done;
      swap a.(!i) a.(!j);
      reverse a (!i + 1) (n - 1);
      true
    end

Starting from [1;2;3;4;5], next_perm returns true 119 times then
false (when reverse-sorted). 5! - 1 = 119.

Tests guarded `while … && a.(!i) … do` loops that rely on the
iter-242 short-circuit fix.

156 baseline programs total.
This commit is contained in:
2026-05-10 21:47:52 +00:00
parent 4761d41a0d
commit e057d9f18f
3 changed files with 40 additions and 0 deletions

View File

@@ -102,6 +102,7 @@
"module_use.ml": 3,
"monotonic.ml": 4,
"newton_sqrt.ml": 1414,
"next_permutation.ml": 119,
"number_words.ml": 106,
"mutable_record.ml": 10,
"option_match.ml": 5,