Module Sokoban

type board = {
  1. map : Tilemap.t;
  2. col : int;
  3. row : int;
  4. moves : int;
  5. pushes : int;
}
val start : Playground.number -> string list -> board
val step : board -> (int * int) -> board option
val solved : board -> bool
val tile : char -> Playground.shape
val player : Playground.shape
val of_xsb : string -> string list list
val to_xsb : string list list -> string
val trim : string list -> string list
val problems : string list -> string list
type solution =
  1. | Moves of string
  2. | Unsolvable
  3. | Gave_up of int
val solve : ?max_positions:int -> string list -> solution