ocaml: phase 5.1 radix_sort.ml baseline (LSD radix sort, sentinel 802002)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 24s

LSD radix sort over base 10 digits. Per pass:
  - 10 bucket-refs created via Array.init 10 (fun _ -> ref []) (each
    closure call yields a distinct list cell)
  - scan array, append each value to its digit's bucket
  - flatten buckets back to the array in order

Input  [170;45;75;90;802;24;2;66]
Output [2;24;45;66;75;90;170;802]

Sentinel: a.(0) + a.(7)*1000 = 2 + 802*1000 = 802002.

Tests array-of-refs with !buckets.(d) deref, list-mode bucket
sort within in-place array sort, unused for-loop var (`for _ =
1 to maxd`).

159 baseline programs total.
This commit is contained in:
2026-05-10 22:17:40 +00:00
parent 5eed0dd5f5
commit bcb7db2ea4
3 changed files with 50 additions and 0 deletions

View File

@@ -407,6 +407,15 @@ _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-10 Phase 5.1 — radix_sort.ml baseline (LSD radix sort,
fingerprint a.(0) + a.(7)*1000 = 802002). 8-element array
[170;45;75;90;802;24;2;66] sorts to [2;24;45;66;75;90;170;802].
Sentinel encoding 2 + 802*1000 = 802002. Uses `Array.init 10
(fun _ -> ref [])` to allocate 10 fresh per-digit bucket cells
per pass (each closure call yields a distinct ref). Tests
array-of-refs with `!buckets.(d)` deref pattern, list-mode
bucket sort within in-place array sort, `for _ = 1 to maxd`
unused loop variable. 159 baseline programs total.
- 2026-05-10 Phase 5.1 — coin_min.ml baseline (minimum-coin change
for 67¢ with US denominations = 6 coins). DP with -1 sentinel
for unreachable values: `dp.(i) := min over coins c of dp.(i-c)+1