Maze generation: Difference between revisions

m
better shuffle function
(Refactored code)
m (better shuffle function)
Line 4,173:
let ny = int_of_string Sys.argv.(2) in
 
let recshuffle random_orderlst = function
let nl = List.map (fun c -> (Random.bits (), c)) lst in
| [] -> []
List.map snd (List.sort compare nl) in
| [a] -> [a]
| x -> let i = Random.int (List.length x) in
let rec del i = function
| [] -> failwith "del"
| h::t -> if i = 0 then t else h :: del (i-1) t in
(List.nth x i) :: random_order (del i x) in
 
let get_neighbours (x,y) =
Line 4,191 ⟶ 4,186:
let check k =
if not (marked k) then (join cell k; visit k) in
List.iter check (random_ordershuffle (get_neighbours cell)) in
 
let print_maze () =
Anonymous user