#require "fmt" (* #directory "_build/src" *) (* #load "psq.cma" *) let shuff arr = let n = Array.length arr in for i = 0 to n - 2 do let j = Random.int (n - i) + i in let t = arr.(i) in arr.(i) <- arr.(j); arr.(j) <- t done let permutation n = let arr = Array.init n (fun x -> x) in shuff arr; Array.to_list arr let rec (--) a b = if a > b then [] else a :: succ a -- b module I = struct type t = int let compare = compare end module Q = Psq.Make (I) (I) let pp_q = Q.pp_dump Fmt.int Fmt.int ;; #install_printer pp_q