ocaml: phase 5.1 queens.ml baseline (15/15 pass)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 24s

4-queens via recursive backtracking + List.fold_left. Returns 2 (the
two solutions of 4-queens). Per-program timeout in run.sh bumped to
240s — the tree-walking interpreter is slow on heavy recursion but
correct.

The substrate handles full backtracking + safe-check recursion +
list-driven candidate enumeration end-to-end.
This commit is contained in:
2026-05-08 19:04:04 +00:00
parent 50a219b688
commit 360a3ed51f
4 changed files with 43 additions and 1 deletions

View File

@@ -10,6 +10,7 @@
"module_use.ml": 3,
"mutable_record.ml": 10,
"option_match.ml": 5,
"queens.ml": 2,
"quicksort.ml": 44,
"sum_squares.ml": 385,
"word_count.ml": 3

View File

@@ -0,0 +1,35 @@
(* Baseline: n-queens count for n=6.
We count placements of n queens on an n×n board such that no two
share a row, column, or diagonal. *)
let safe q queens =
let rec go qs offset =
match qs with
| [] -> true
| h :: t ->
if h = q then false
else if h - q = offset then false
else if q - h = offset then false
else go t (offset + 1)
in
go queens 1
;;
let rec range a b =
if a > b then [] else a :: range (a + 1) b
;;
let rec solve n queens row =
if row > n then 1
else
List.fold_left
(fun acc col ->
if safe col queens then
acc + solve n (col :: queens) (row + 1)
else
acc)
0
(range 1 n)
;;
solve 4 [] 1

View File

@@ -36,7 +36,7 @@ for f in lib/ocaml/baseline/*.ml; do
(eval "(ocaml-run-program (file-read \"$f\"))")
EOF
output=$(timeout 120 "$SX_SERVER" < "$TMP" 2>/dev/null)
output=$(timeout 240 "$SX_SERVER" < "$TMP" 2>/dev/null)
rm -f "$TMP"
result=$(echo "$output" | awk '