(* initialisation *) module Cube = PocketCube;; module CubeMap = UnbalancedMap.Mutable(Cube);; module CubeSolver = Search.Make(Cube)(CubeMap);; Random.self_init ();; (* scramble the cube using 60 random moves *) let scrambled,moves = Cube.scramble Cube.initial 60;; (* solve the scramble *) let sol = CubeSolver.bidirectionnal Cube.player Cube.zip scrambled [] Cube.initial [];; (* print one solution *) CubeMap.choose sol;;