% floortile in Picat % by Neng-Fa Zhou & Agostino Govier, August 2014 /* From the original domain description (here (http://www.plg.inf.uc3m.es/ipc2011- deterministic/DomainsSequential.html#Floortile)). A set of robots use different colors to paint patterns in floor tiles. The robots can move around the floor tiles in four directions (up, down, left and right). Robots paint with one color at a time, but can change their spray guns to any available color. However, robots can only paint the tile that is in front (up) and behind (down) them, and once a tile has been painted no robot can stand on it. For the IPC set, robots need to paint a grid with black and white, where the cell color is alternated always. This particular configuration makes the domain hard because robots should only paint tiles in front of them, since painting tiles behind make the search to reach a dead-end. */ import planner,ordset. /* A state is represented by a list in the form {Robots,WTiles,BTiles} where Robots is an ordered list of robots, and WTitles (BTiles) is an ordered list of locations of white (black) tiles. A robot in Robots takes the form [Color|Loc] where Color is the color of the paint held by the robot and Loc is the location of the robot. */ main => test. pddl(IFacts,GFacts) => initialize_table, IFacts1 = [Fact : Fact in IFacts, Fact != (_ = _)], % filter out =(total_cost,0) cl_facts(IFacts1,$[up(-,+),left(-,+),right(-,+),down(-,+)]), Robots = findall([Color|Loc],(robot_at(Id,Loc),robot_has(Id,Color))).sort(), cl_facts(GFacts,$[painted(-,-),painted(+,+)]), % painted/1 find_all(Loc,painted(Loc,white)).sort() = GWTiles, GWFacts = [$white_in_goal(Loc) : Loc in GWTiles], cl_facts(GWFacts,$[white_in_goal(+)]), find_all(Loc,painted(Loc,black)).sort() = GBTiles, GBFacts = [$black_in_goal(Loc) : Loc in GBTiles], cl_facts(GBFacts,$[black_in_goal(+)]), % NOTE: cl will clear up the table space, so don't use tabling before cl!! IState = [Robots,[],[]], best_plan_unbounded(IState,9999,Plan,PlanCost), writeln(plan=Plan), writeln(planCost=PlanCost). table painted_w_tiles(GWTiles) => find_all(Loc,painted(Loc,white)).sort() = GWTiles. table painted_b_tiles(GBTiles) => find_all(Loc,painted(Loc,black)).sort() = GBTiles. final([_,WTiles,BTiles]) => painted_w_tiles(GWTiles), WTiles==GWTiles, painted_b_tiles(GBTiles), BTiles==GBTiles. action(State@[Robots|_],NextS,Action,ActionCost) => select(Robot,Robots,RobotsR), robot_action(Robot,RobotsR,State,NextS,Action,ActionCost). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % actions: uses the domain knowledge that "robots should only paint % tiles in front of them, since painting tiles behind make the % search to reach a dead-end." %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% robot_action([white|Loc],RobotsR,[Robots,WTiles|Tail@[BTiles]],NextS,Action,ActionCost), up(ULoc,Loc), white_in_goal(ULoc), not_occupied_by_robot(ULoc,RobotsR), % ULoc is clear not member(ULoc,WTiles), (up(UULoc,ULoc) -> membchk(UULoc,BTiles); true) % ULoc has to be painted from Loc => % paint it deterministically Action = $dpaint(ULoc), ActionCost = 2, NextS = [Robots,insert_ordered(WTiles,ULoc)|Tail]. robot_action([white|Loc],RobotsR,[Robots,WTiles|Tail@[BTiles]],NextS,Action,ActionCost), down(DLoc,Loc), white_in_goal(DLoc), not_occupied_by_robot(DLoc,RobotsR), % DLoc is clear not member(DLoc,WTiles), (down(DDLoc,DLoc) -> membchk(DDLoc,BTiles); true) % DLoc has to be painted from Loc => Action = $dpaint(DLoc), ActionCost = 2, NextS = [Robots,insert_ordered(WTiles,DLoc)|Tail]. robot_action([black|Loc],RobotsR,[Robots,WTiles,BTiles],NextS,Action,ActionCost), up(ULoc,Loc), black_in_goal(ULoc), not_occupied_by_robot(ULoc,RobotsR), % ULoc is clear not member(ULoc,BTiles), (up(UULoc,ULoc) -> membchk(UULoc,WTiles); true) % ULoc has to be painted from Loc => Action = $dpaint(ULoc), ActionCost = 2, NextS = [Robots,WTiles,insert_ordered(BTiles,ULoc)]. robot_action([black|Loc],RobotsR,[Robots,WTiles,BTiles],NextS,Action,ActionCost), down(DLoc,Loc), black_in_goal(DLoc), not_occupied_by_robot(DLoc,RobotsR), % DLoc is clear not member(DLoc,BTiles), (down(DDLoc,DLoc) -> membchk(DDLoc,WTiles); true) % DLoc has to be painted from Loc => Action = $dpaint(DLoc), ActionCost = 2, NextS = [Robots,WTiles,insert_ordered(BTiles,DLoc)]. robot_action([Color|Loc],RobotsR,[_Robots|Tail],NextS,Action,ActionCost) ?=> Action = $change_color_then_paint(Color1,PaintAction), % a macro action (Color==white-> Color1=black ; Color1=white ), Robot1 = [Color1|Loc], PaintAction = $paint(_), robot_action(Robot1,RobotsR,[insert_ordered(RobotsR,Robot1)|Tail],NextS,PaintAction,PaintActionCost), ActionCost = 5+PaintActionCost. robot_action([Color|Loc],RobotsR,[_Robots|Tail@[WTiles,BTiles]],NextS,Action,ActionCost) => Action = $move(Loc,Dir), move(Loc,Loc1,Dir,ActionCost), not_occupied_by_robot(Loc1,RobotsR), not member(Loc1,WTiles), not member(Loc1,BTiles), % Loc1 is clear NextS = [insert_ordered(RobotsR,[Color|Loc1])|Tail]. % not_occupied_by_robot(Loc,Robots) is the the same as not member([_|Loc],Robots) not_occupied_by_robot(_,[]) => true. not_occupied_by_robot(Loc,[[_|Loc]|_]) => fail. not_occupied_by_robot(Loc,[_|Robots]) => not_occupied_by_robot(Loc,Robots). move(Loc,Loc1,Dir,ActionCost) ?=> down(Loc1,Loc), Dir = down, ActionCost = 1. move(Loc,Loc1,Dir,ActionCost) ?=> left(Loc1,Loc), Dir = left, ActionCost = 1. move(Loc,Loc1,Dir,ActionCost) ?=> right(Loc1,Loc), Dir = right, ActionCost = 1. move(Loc,Loc1,Dir,ActionCost) => up(Loc1,Loc), Dir = up, ActionCost = 3. main([Bench]) => println(Bench), P = Bench.to_atom(), time(call(P)). all(Benches) => Benches=[p01432,p01442,p01532,p01542,p01552,p01642,p01652,p02442,p02532,p02542,p02552,p02642,p02652,p03432,p03442,p03532,p03542,p03552,p03642,p03652]. test => p01432. p01432 => Init = $[ =(totalcost,0), robot_at(robot1,01), robot_has(robot1,white), robot_at(robot2,22), robot_has(robot2,black), available_color(white), available_color(black), clear(02), clear(03), clear(11), clear(12), clear(13), clear(21), clear(23), clear(31), clear(32), clear(33), clear(41), clear(42), clear(43), up(11,01), up(12,02), up(13,03), up(21,11), up(22,12), up(23,13), up(31,21), up(32,22), up(33,23), up(41,31), up(42,32), up(43,33), down(01,11), down(02,12), down(03,13), down(11,21), down(12,22), down(13,23), down(21,31), down(22,32), down(23,33), down(31,41), down(32,42), down(33,43), right(02,01), right(03,02), right(12,11), right(13,12), right(22,21), right(23,22), right(32,31), right(33,32), right(42,41), right(43,42), left(01,02), left(02,03), left(11,12), left(12,13), left(21,22), left(22,23), left(31,32), left(32,33), left(41,42), left(42,43)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(21,black), painted(22,white), painted(23,black), painted(31,white), painted(32,black), painted(33,white), painted(41,black), painted(42,white), painted(43,black)], pddl(Init,Goal). p01442 => Init = $[ =(totalcost,0), robot_at(robot1,11), robot_has(robot1,white), robot_at(robot2,43), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(02), clear(03), clear(04), clear(12), clear(13), clear(14), clear(21), clear(22), clear(23), clear(24), clear(31), clear(32), clear(33), clear(34), clear(41), clear(42), clear(44), up(11,01), up(12,02), up(13,03), up(14,04), up(21,11), up(22,12), up(23,13), up(24,14), up(31,21), up(32,22), up(33,23), up(34,24), up(41,31), up(42,32), up(43,33), up(44,34), down(01,11), down(02,12), down(03,13), down(04,14), down(11,21), down(12,22), down(13,23), down(14,24), down(21,31), down(22,32), down(23,33), down(24,34), down(31,41), down(32,42), down(33,43), down(34,44), right(02,01), right(03,02), right(04,03), right(12,11), right(13,12), right(14,13), right(22,21), right(23,22), right(24,23), right(32,31), right(33,32), right(34,33), right(42,41), right(43,42), right(44,43), left(01,02), left(02,03), left(03,04), left(11,12), left(12,13), left(13,14), left(21,22), left(22,23), left(23,24), left(31,32), left(32,33), left(33,34), left(41,42), left(42,43), left(43,44)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(14,black), painted(21,black), painted(22,white), painted(23,black), painted(24,white), painted(31,white), painted(32,black), painted(33,white), painted(34,black), painted(41,black), painted(42,white), painted(43,black), painted(44,white)], pddl(Init,Goal). p01532 => Init = $[ =(totalcost,0), robot_at(robot1,21), robot_has(robot1,white), robot_at(robot2,52), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(02), clear(03), clear(11), clear(12), clear(13), clear(22), clear(23), clear(31), clear(32), clear(33), clear(41), clear(42), clear(43), clear(51), clear(53), up(11,01), up(12,02), up(13,03), up(21,11), up(22,12), up(23,13), up(31,21), up(32,22), up(33,23), up(41,31), up(42,32), up(43,33), up(51,41), up(52,42), up(53,43), down(01,11), down(02,12), down(03,13), down(11,21), down(12,22), down(13,23), down(21,31), down(22,32), down(23,33), down(31,41), down(32,42), down(33,43), down(41,51), down(42,52), down(43,53), right(02,01), right(03,02), right(12,11), right(13,12), right(22,21), right(23,22), right(32,31), right(33,32), right(42,41), right(43,42), right(52,51), right(53,52), left(01,02), left(02,03), left(11,12), left(12,13), left(21,22), left(22,23), left(31,32), left(32,33), left(41,42), left(42,43), left(51,52), left(52,53)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(21,black), painted(22,white), painted(23,black), painted(31,white), painted(32,black), painted(33,white), painted(41,black), painted(42,white), painted(43,black), painted(51,white), painted(52,black), painted(53,white)], pddl(Init,Goal). p01542 => Init = $[ =(totalcost,0), robot_at(robot1,02), robot_has(robot1,white), robot_at(robot2,31), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(03), clear(04), clear(11), clear(12), clear(13), clear(14), clear(21), clear(22), clear(23), clear(24), clear(32), clear(33), clear(34), clear(41), clear(42), clear(43), clear(44), clear(51), clear(52), clear(53), clear(54), up(11,01), up(12,02), up(13,03), up(14,04), up(21,11), up(22,12), up(23,13), up(24,14), up(31,21), up(32,22), up(33,23), up(34,24), up(41,31), up(42,32), up(43,33), up(44,34), up(51,41), up(52,42), up(53,43), up(54,44), down(01,11), down(02,12), down(03,13), down(04,14), down(11,21), down(12,22), down(13,23), down(14,24), down(21,31), down(22,32), down(23,33), down(24,34), down(31,41), down(32,42), down(33,43), down(34,44), down(41,51), down(42,52), down(43,53), down(44,54), right(02,01), right(03,02), right(04,03), right(12,11), right(13,12), right(14,13), right(22,21), right(23,22), right(24,23), right(32,31), right(33,32), right(34,33), right(42,41), right(43,42), right(44,43), right(52,51), right(53,52), right(54,53), left(01,02), left(02,03), left(03,04), left(11,12), left(12,13), left(13,14), left(21,22), left(22,23), left(23,24), left(31,32), left(32,33), left(33,34), left(41,42), left(42,43), left(43,44), left(51,52), left(52,53), left(53,54)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(14,black), painted(21,black), painted(22,white), painted(23,black), painted(24,white), painted(31,white), painted(32,black), painted(33,white), painted(34,black), painted(41,black), painted(42,white), painted(43,black), painted(44,white), painted(51,white), painted(52,black), painted(53,white), painted(54,black)], pddl(Init,Goal). p01552 => Init = $[ =(totalcost,0), robot_at(robot1,03), robot_has(robot1,white), robot_at(robot2,52), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(02), clear(04), clear(05), clear(11), clear(12), clear(13), clear(14), clear(15), clear(21), clear(22), clear(23), clear(24), clear(25), clear(31), clear(32), clear(33), clear(34), clear(35), clear(41), clear(42), clear(43), clear(44), clear(45), clear(51), clear(53), clear(54), clear(55), up(11,01), up(12,02), up(13,03), up(14,04), up(15,05), up(21,11), up(22,12), up(23,13), up(24,14), up(25,15), up(31,21), up(32,22), up(33,23), up(34,24), up(35,25), up(41,31), up(42,32), up(43,33), up(44,34), up(45,35), up(51,41), up(52,42), up(53,43), up(54,44), up(55,45), down(01,11), down(02,12), down(03,13), down(04,14), down(05,15), down(11,21), down(12,22), down(13,23), down(14,24), down(15,25), down(21,31), down(22,32), down(23,33), down(24,34), down(25,35), down(31,41), down(32,42), down(33,43), down(34,44), down(35,45), down(41,51), down(42,52), down(43,53), down(44,54), down(45,55), right(02,01), right(03,02), right(04,03), right(05,04), right(12,11), right(13,12), right(14,13), right(15,14), right(22,21), right(23,22), right(24,23), right(25,24), right(32,31), right(33,32), right(34,33), right(35,34), right(42,41), right(43,42), right(44,43), right(45,44), right(52,51), right(53,52), right(54,53), right(55,54), left(01,02), left(02,03), left(03,04), left(04,05), left(11,12), left(12,13), left(13,14), left(14,15), left(21,22), left(22,23), left(23,24), left(24,25), left(31,32), left(32,33), left(33,34), left(34,35), left(41,42), left(42,43), left(43,44), left(44,45), left(51,52), left(52,53), left(53,54), left(54,55)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(14,black), painted(15,white), painted(21,black), painted(22,white), painted(23,black), painted(24,white), painted(25,black), painted(31,white), painted(32,black), painted(33,white), painted(34,black), painted(35,white), painted(41,black), painted(42,white), painted(43,black), painted(44,white), painted(45,black), painted(51,white), painted(52,black), painted(53,white), painted(54,black), painted(55,white)], pddl(Init,Goal). p01642 => Init = $[ =(totalcost,0), robot_at(robot1,11), robot_has(robot1,white), robot_at(robot2,52), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(02), clear(03), clear(04), clear(12), clear(13), clear(14), clear(21), clear(22), clear(23), clear(24), clear(31), clear(32), clear(33), clear(34), clear(41), clear(42), clear(43), clear(44), clear(51), clear(53), clear(54), clear(61), clear(62), clear(63), clear(64), up(11,01), up(12,02), up(13,03), up(14,04), up(21,11), up(22,12), up(23,13), up(24,14), up(31,21), up(32,22), up(33,23), up(34,24), up(41,31), up(42,32), up(43,33), up(44,34), up(51,41), up(52,42), up(53,43), up(54,44), up(61,51), up(62,52), up(63,53), up(64,54), down(01,11), down(02,12), down(03,13), down(04,14), down(11,21), down(12,22), down(13,23), down(14,24), down(21,31), down(22,32), down(23,33), down(24,34), down(31,41), down(32,42), down(33,43), down(34,44), down(41,51), down(42,52), down(43,53), down(44,54), down(51,61), down(52,62), down(53,63), down(54,64), right(02,01), right(03,02), right(04,03), right(12,11), right(13,12), right(14,13), right(22,21), right(23,22), right(24,23), right(32,31), right(33,32), right(34,33), right(42,41), right(43,42), right(44,43), right(52,51), right(53,52), right(54,53), right(62,61), right(63,62), right(64,63), left(01,02), left(02,03), left(03,04), left(11,12), left(12,13), left(13,14), left(21,22), left(22,23), left(23,24), left(31,32), left(32,33), left(33,34), left(41,42), left(42,43), left(43,44), left(51,52), left(52,53), left(53,54), left(61,62), left(62,63), left(63,64)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(14,black), painted(21,black), painted(22,white), painted(23,black), painted(24,white), painted(31,white), painted(32,black), painted(33,white), painted(34,black), painted(41,black), painted(42,white), painted(43,black), painted(44,white), painted(51,white), painted(52,black), painted(53,white), painted(54,black), painted(61,black), painted(62,white), painted(63,black), painted(64,white)], pddl(Init,Goal). p01652 => Init = $[ =(totalcost,0), robot_at(robot1,62), robot_has(robot1,white), robot_at(robot2,43), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(02), clear(03), clear(04), clear(05), clear(11), clear(12), clear(13), clear(14), clear(15), clear(21), clear(22), clear(23), clear(24), clear(25), clear(31), clear(32), clear(33), clear(34), clear(35), clear(41), clear(42), clear(44), clear(45), clear(51), clear(52), clear(53), clear(54), clear(55), clear(61), clear(63), clear(64), clear(65), up(11,01), up(12,02), up(13,03), up(14,04), up(15,05), up(21,11), up(22,12), up(23,13), up(24,14), up(25,15), up(31,21), up(32,22), up(33,23), up(34,24), up(35,25), up(41,31), up(42,32), up(43,33), up(44,34), up(45,35), up(51,41), up(52,42), up(53,43), up(54,44), up(55,45), up(61,51), up(62,52), up(63,53), up(64,54), up(65,55), down(01,11), down(02,12), down(03,13), down(04,14), down(05,15), down(11,21), down(12,22), down(13,23), down(14,24), down(15,25), down(21,31), down(22,32), down(23,33), down(24,34), down(25,35), down(31,41), down(32,42), down(33,43), down(34,44), down(35,45), down(41,51), down(42,52), down(43,53), down(44,54), down(45,55), down(51,61), down(52,62), down(53,63), down(54,64), down(55,65), right(02,01), right(03,02), right(04,03), right(05,04), right(12,11), right(13,12), right(14,13), right(15,14), right(22,21), right(23,22), right(24,23), right(25,24), right(32,31), right(33,32), right(34,33), right(35,34), right(42,41), right(43,42), right(44,43), right(45,44), right(52,51), right(53,52), right(54,53), right(55,54), right(62,61), right(63,62), right(64,63), right(65,64), left(01,02), left(02,03), left(03,04), left(04,05), left(11,12), left(12,13), left(13,14), left(14,15), left(21,22), left(22,23), left(23,24), left(24,25), left(31,32), left(32,33), left(33,34), left(34,35), left(41,42), left(42,43), left(43,44), left(44,45), left(51,52), left(52,53), left(53,54), left(54,55), left(61,62), left(62,63), left(63,64), left(64,65)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(14,black), painted(15,white), painted(21,black), painted(22,white), painted(23,black), painted(24,white), painted(25,black), painted(31,white), painted(32,black), painted(33,white), painted(34,black), painted(35,white), painted(41,black), painted(42,white), painted(43,black), painted(44,white), painted(45,black), painted(51,white), painted(52,black), painted(53,white), painted(54,black), painted(55,white), painted(61,black), painted(62,white), painted(63,black), painted(64,white), painted(65,black)], pddl(Init,Goal). p02442 => Init = $[ =(totalcost,0), robot_at(robot1,02), robot_has(robot1,white), robot_at(robot2,11), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(03), clear(04), clear(12), clear(13), clear(14), clear(21), clear(22), clear(23), clear(24), clear(31), clear(32), clear(33), clear(34), clear(41), clear(42), clear(43), clear(44), up(11,01), up(12,02), up(13,03), up(14,04), up(21,11), up(22,12), up(23,13), up(24,14), up(31,21), up(32,22), up(33,23), up(34,24), up(41,31), up(42,32), up(43,33), up(44,34), down(01,11), down(02,12), down(03,13), down(04,14), down(11,21), down(12,22), down(13,23), down(14,24), down(21,31), down(22,32), down(23,33), down(24,34), down(31,41), down(32,42), down(33,43), down(34,44), right(02,01), right(03,02), right(04,03), right(12,11), right(13,12), right(14,13), right(22,21), right(23,22), right(24,23), right(32,31), right(33,32), right(34,33), right(42,41), right(43,42), right(44,43), left(01,02), left(02,03), left(03,04), left(11,12), left(12,13), left(13,14), left(21,22), left(22,23), left(23,24), left(31,32), left(32,33), left(33,34), left(41,42), left(42,43), left(43,44)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(14,black), painted(21,black), painted(22,white), painted(23,black), painted(24,white), painted(31,white), painted(32,black), painted(33,white), painted(34,black), painted(41,black), painted(42,white), painted(43,black), painted(44,white)], pddl(Init,Goal). p02532 => Init = $[ =(totalcost,0), robot_at(robot1,22), robot_has(robot1,white), robot_at(robot2,31), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(02), clear(03), clear(11), clear(12), clear(13), clear(21), clear(23), clear(32), clear(33), clear(41), clear(42), clear(43), clear(51), clear(52), clear(53), up(11,01), up(12,02), up(13,03), up(21,11), up(22,12), up(23,13), up(31,21), up(32,22), up(33,23), up(41,31), up(42,32), up(43,33), up(51,41), up(52,42), up(53,43), down(01,11), down(02,12), down(03,13), down(11,21), down(12,22), down(13,23), down(21,31), down(22,32), down(23,33), down(31,41), down(32,42), down(33,43), down(41,51), down(42,52), down(43,53), right(02,01), right(03,02), right(12,11), right(13,12), right(22,21), right(23,22), right(32,31), right(33,32), right(42,41), right(43,42), right(52,51), right(53,52), left(01,02), left(02,03), left(11,12), left(12,13), left(21,22), left(22,23), left(31,32), left(32,33), left(41,42), left(42,43), left(51,52), left(52,53)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(21,black), painted(22,white), painted(23,black), painted(31,white), painted(32,black), painted(33,white), painted(41,black), painted(42,white), painted(43,black), painted(51,white), painted(52,black), painted(53,white)], pddl(Init,Goal). p02542 => Init = $[ =(totalcost,0), robot_at(robot1,01), robot_has(robot1,white), robot_at(robot2,13), robot_has(robot2,black), available_color(white), available_color(black), clear(02), clear(03), clear(04), clear(11), clear(12), clear(14), clear(21), clear(22), clear(23), clear(24), clear(31), clear(32), clear(33), clear(34), clear(41), clear(42), clear(43), clear(44), clear(51), clear(52), clear(53), clear(54), up(11,01), up(12,02), up(13,03), up(14,04), up(21,11), up(22,12), up(23,13), up(24,14), up(31,21), up(32,22), up(33,23), up(34,24), up(41,31), up(42,32), up(43,33), up(44,34), up(51,41), up(52,42), up(53,43), up(54,44), down(01,11), down(02,12), down(03,13), down(04,14), down(11,21), down(12,22), down(13,23), down(14,24), down(21,31), down(22,32), down(23,33), down(24,34), down(31,41), down(32,42), down(33,43), down(34,44), down(41,51), down(42,52), down(43,53), down(44,54), right(02,01), right(03,02), right(04,03), right(12,11), right(13,12), right(14,13), right(22,21), right(23,22), right(24,23), right(32,31), right(33,32), right(34,33), right(42,41), right(43,42), right(44,43), right(52,51), right(53,52), right(54,53), left(01,02), left(02,03), left(03,04), left(11,12), left(12,13), left(13,14), left(21,22), left(22,23), left(23,24), left(31,32), left(32,33), left(33,34), left(41,42), left(42,43), left(43,44), left(51,52), left(52,53), left(53,54)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(14,black), painted(21,black), painted(22,white), painted(23,black), painted(24,white), painted(31,white), painted(32,black), painted(33,white), painted(34,black), painted(41,black), painted(42,white), painted(43,black), painted(44,white), painted(51,white), painted(52,black), painted(53,white), painted(54,black)], pddl(Init,Goal). p02552 => Init = $[ =(totalcost,0), robot_at(robot1,34), robot_has(robot1,white), robot_at(robot2,22), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(02), clear(03), clear(04), clear(05), clear(11), clear(12), clear(13), clear(14), clear(15), clear(21), clear(23), clear(24), clear(25), clear(31), clear(32), clear(33), clear(35), clear(41), clear(42), clear(43), clear(44), clear(45), clear(51), clear(52), clear(53), clear(54), clear(55), up(11,01), up(12,02), up(13,03), up(14,04), up(15,05), up(21,11), up(22,12), up(23,13), up(24,14), up(25,15), up(31,21), up(32,22), up(33,23), up(34,24), up(35,25), up(41,31), up(42,32), up(43,33), up(44,34), up(45,35), up(51,41), up(52,42), up(53,43), up(54,44), up(55,45), down(01,11), down(02,12), down(03,13), down(04,14), down(05,15), down(11,21), down(12,22), down(13,23), down(14,24), down(15,25), down(21,31), down(22,32), down(23,33), down(24,34), down(25,35), down(31,41), down(32,42), down(33,43), down(34,44), down(35,45), down(41,51), down(42,52), down(43,53), down(44,54), down(45,55), right(02,01), right(03,02), right(04,03), right(05,04), right(12,11), right(13,12), right(14,13), right(15,14), right(22,21), right(23,22), right(24,23), right(25,24), right(32,31), right(33,32), right(34,33), right(35,34), right(42,41), right(43,42), right(44,43), right(45,44), right(52,51), right(53,52), right(54,53), right(55,54), left(01,02), left(02,03), left(03,04), left(04,05), left(11,12), left(12,13), left(13,14), left(14,15), left(21,22), left(22,23), left(23,24), left(24,25), left(31,32), left(32,33), left(33,34), left(34,35), left(41,42), left(42,43), left(43,44), left(44,45), left(51,52), left(52,53), left(53,54), left(54,55)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(14,black), painted(15,white), painted(21,black), painted(22,white), painted(23,black), painted(24,white), painted(25,black), painted(31,white), painted(32,black), painted(33,white), painted(34,black), painted(35,white), painted(41,black), painted(42,white), painted(43,black), painted(44,white), painted(45,black), painted(51,white), painted(52,black), painted(53,white), painted(54,black), painted(55,white)], pddl(Init,Goal). p02642 => Init = $[ =(totalcost,0), robot_at(robot1,61), robot_has(robot1,white), robot_at(robot2,03), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(02), clear(04), clear(11), clear(12), clear(13), clear(14), clear(21), clear(22), clear(23), clear(24), clear(31), clear(32), clear(33), clear(34), clear(41), clear(42), clear(43), clear(44), clear(51), clear(52), clear(53), clear(54), clear(62), clear(63), clear(64), up(11,01), up(12,02), up(13,03), up(14,04), up(21,11), up(22,12), up(23,13), up(24,14), up(31,21), up(32,22), up(33,23), up(34,24), up(41,31), up(42,32), up(43,33), up(44,34), up(51,41), up(52,42), up(53,43), up(54,44), up(61,51), up(62,52), up(63,53), up(64,54), down(01,11), down(02,12), down(03,13), down(04,14), down(11,21), down(12,22), down(13,23), down(14,24), down(21,31), down(22,32), down(23,33), down(24,34), down(31,41), down(32,42), down(33,43), down(34,44), down(41,51), down(42,52), down(43,53), down(44,54), down(51,61), down(52,62), down(53,63), down(54,64), right(02,01), right(03,02), right(04,03), right(12,11), right(13,12), right(14,13), right(22,21), right(23,22), right(24,23), right(32,31), right(33,32), right(34,33), right(42,41), right(43,42), right(44,43), right(52,51), right(53,52), right(54,53), right(62,61), right(63,62), right(64,63), left(01,02), left(02,03), left(03,04), left(11,12), left(12,13), left(13,14), left(21,22), left(22,23), left(23,24), left(31,32), left(32,33), left(33,34), left(41,42), left(42,43), left(43,44), left(51,52), left(52,53), left(53,54), left(61,62), left(62,63), left(63,64)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(14,black), painted(21,black), painted(22,white), painted(23,black), painted(24,white), painted(31,white), painted(32,black), painted(33,white), painted(34,black), painted(41,black), painted(42,white), painted(43,black), painted(44,white), painted(51,white), painted(52,black), painted(53,white), painted(54,black), painted(61,black), painted(62,white), painted(63,black), painted(64,white)], pddl(Init,Goal). p02652 => Init = $[ =(totalcost,0), robot_at(robot1,14), robot_has(robot1,white), robot_at(robot2,12), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(02), clear(03), clear(04), clear(05), clear(11), clear(13), clear(15), clear(21), clear(22), clear(23), clear(24), clear(25), clear(31), clear(32), clear(33), clear(34), clear(35), clear(41), clear(42), clear(43), clear(44), clear(45), clear(51), clear(52), clear(53), clear(54), clear(55), clear(61), clear(62), clear(63), clear(64), clear(65), up(11,01), up(12,02), up(13,03), up(14,04), up(15,05), up(21,11), up(22,12), up(23,13), up(24,14), up(25,15), up(31,21), up(32,22), up(33,23), up(34,24), up(35,25), up(41,31), up(42,32), up(43,33), up(44,34), up(45,35), up(51,41), up(52,42), up(53,43), up(54,44), up(55,45), up(61,51), up(62,52), up(63,53), up(64,54), up(65,55), down(01,11), down(02,12), down(03,13), down(04,14), down(05,15), down(11,21), down(12,22), down(13,23), down(14,24), down(15,25), down(21,31), down(22,32), down(23,33), down(24,34), down(25,35), down(31,41), down(32,42), down(33,43), down(34,44), down(35,45), down(41,51), down(42,52), down(43,53), down(44,54), down(45,55), down(51,61), down(52,62), down(53,63), down(54,64), down(55,65), right(02,01), right(03,02), right(04,03), right(05,04), right(12,11), right(13,12), right(14,13), right(15,14), right(22,21), right(23,22), right(24,23), right(25,24), right(32,31), right(33,32), right(34,33), right(35,34), right(42,41), right(43,42), right(44,43), right(45,44), right(52,51), right(53,52), right(54,53), right(55,54), right(62,61), right(63,62), right(64,63), right(65,64), left(01,02), left(02,03), left(03,04), left(04,05), left(11,12), left(12,13), left(13,14), left(14,15), left(21,22), left(22,23), left(23,24), left(24,25), left(31,32), left(32,33), left(33,34), left(34,35), left(41,42), left(42,43), left(43,44), left(44,45), left(51,52), left(52,53), left(53,54), left(54,55), left(61,62), left(62,63), left(63,64), left(64,65)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(14,black), painted(15,white), painted(21,black), painted(22,white), painted(23,black), painted(24,white), painted(25,black), painted(31,white), painted(32,black), painted(33,white), painted(34,black), painted(35,white), painted(41,black), painted(42,white), painted(43,black), painted(44,white), painted(45,black), painted(51,white), painted(52,black), painted(53,white), painted(54,black), painted(55,white), painted(61,black), painted(62,white), painted(63,black), painted(64,white), painted(65,black)], pddl(Init,Goal). p03432 => Init = $[ =(totalcost,0), robot_at(robot1,12), robot_has(robot1,white), robot_at(robot2,11), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(02), clear(03), clear(13), clear(21), clear(22), clear(23), clear(31), clear(32), clear(33), clear(41), clear(42), clear(43), up(11,01), up(12,02), up(13,03), up(21,11), up(22,12), up(23,13), up(31,21), up(32,22), up(33,23), up(41,31), up(42,32), up(43,33), down(01,11), down(02,12), down(03,13), down(11,21), down(12,22), down(13,23), down(21,31), down(22,32), down(23,33), down(31,41), down(32,42), down(33,43), right(02,01), right(03,02), right(12,11), right(13,12), right(22,21), right(23,22), right(32,31), right(33,32), right(42,41), right(43,42), left(01,02), left(02,03), left(11,12), left(12,13), left(21,22), left(22,23), left(31,32), left(32,33), left(41,42), left(42,43)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(21,black), painted(22,white), painted(23,black), painted(31,white), painted(32,black), painted(33,white), painted(41,black), painted(42,white), painted(43,black)], pddl(Init,Goal). p03442 => Init = $[ =(totalcost,0), robot_at(robot1,12), robot_has(robot1,white), robot_at(robot2,13), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(02), clear(03), clear(04), clear(11), clear(14), clear(21), clear(22), clear(23), clear(24), clear(31), clear(32), clear(33), clear(34), clear(41), clear(42), clear(43), clear(44), up(11,01), up(12,02), up(13,03), up(14,04), up(21,11), up(22,12), up(23,13), up(24,14), up(31,21), up(32,22), up(33,23), up(34,24), up(41,31), up(42,32), up(43,33), up(44,34), down(01,11), down(02,12), down(03,13), down(04,14), down(11,21), down(12,22), down(13,23), down(14,24), down(21,31), down(22,32), down(23,33), down(24,34), down(31,41), down(32,42), down(33,43), down(34,44), right(02,01), right(03,02), right(04,03), right(12,11), right(13,12), right(14,13), right(22,21), right(23,22), right(24,23), right(32,31), right(33,32), right(34,33), right(42,41), right(43,42), right(44,43), left(01,02), left(02,03), left(03,04), left(11,12), left(12,13), left(13,14), left(21,22), left(22,23), left(23,24), left(31,32), left(32,33), left(33,34), left(41,42), left(42,43), left(43,44)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(14,black), painted(21,black), painted(22,white), painted(23,black), painted(24,white), painted(31,white), painted(32,black), painted(33,white), painted(34,black), painted(41,black), painted(42,white), painted(43,black), painted(44,white)], pddl(Init,Goal). p03532 => Init = $[ =(totalcost,0), robot_at(robot1,31), robot_has(robot1,white), robot_at(robot2,22), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(02), clear(03), clear(11), clear(12), clear(13), clear(21), clear(23), clear(32), clear(33), clear(41), clear(42), clear(43), clear(51), clear(52), clear(53), up(11,01), up(12,02), up(13,03), up(21,11), up(22,12), up(23,13), up(31,21), up(32,22), up(33,23), up(41,31), up(42,32), up(43,33), up(51,41), up(52,42), up(53,43), down(01,11), down(02,12), down(03,13), down(11,21), down(12,22), down(13,23), down(21,31), down(22,32), down(23,33), down(31,41), down(32,42), down(33,43), down(41,51), down(42,52), down(43,53), right(02,01), right(03,02), right(12,11), right(13,12), right(22,21), right(23,22), right(32,31), right(33,32), right(42,41), right(43,42), right(52,51), right(53,52), left(01,02), left(02,03), left(11,12), left(12,13), left(21,22), left(22,23), left(31,32), left(32,33), left(41,42), left(42,43), left(51,52), left(52,53)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(21,black), painted(22,white), painted(23,black), painted(31,white), painted(32,black), painted(33,white), painted(41,black), painted(42,white), painted(43,black), painted(51,white), painted(52,black), painted(53,white)], pddl(Init,Goal). p03542 => Init = $[ =(totalcost,0), robot_at(robot1,33), robot_has(robot1,white), robot_at(robot2,31), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(02), clear(03), clear(04), clear(11), clear(12), clear(13), clear(14), clear(21), clear(22), clear(23), clear(24), clear(32), clear(34), clear(41), clear(42), clear(43), clear(44), clear(51), clear(52), clear(53), clear(54), up(11,01), up(12,02), up(13,03), up(14,04), up(21,11), up(22,12), up(23,13), up(24,14), up(31,21), up(32,22), up(33,23), up(34,24), up(41,31), up(42,32), up(43,33), up(44,34), up(51,41), up(52,42), up(53,43), up(54,44), down(01,11), down(02,12), down(03,13), down(04,14), down(11,21), down(12,22), down(13,23), down(14,24), down(21,31), down(22,32), down(23,33), down(24,34), down(31,41), down(32,42), down(33,43), down(34,44), down(41,51), down(42,52), down(43,53), down(44,54), right(02,01), right(03,02), right(04,03), right(12,11), right(13,12), right(14,13), right(22,21), right(23,22), right(24,23), right(32,31), right(33,32), right(34,33), right(42,41), right(43,42), right(44,43), right(52,51), right(53,52), right(54,53), left(01,02), left(02,03), left(03,04), left(11,12), left(12,13), left(13,14), left(21,22), left(22,23), left(23,24), left(31,32), left(32,33), left(33,34), left(41,42), left(42,43), left(43,44), left(51,52), left(52,53), left(53,54)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(14,black), painted(21,black), painted(22,white), painted(23,black), painted(24,white), painted(31,white), painted(32,black), painted(33,white), painted(34,black), painted(41,black), painted(42,white), painted(43,black), painted(44,white), painted(51,white), painted(52,black), painted(53,white), painted(54,black)], pddl(Init,Goal). p03552 => Init = $[ =(totalcost,0), robot_at(robot1,42), robot_has(robot1,white), robot_at(robot2,34), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(02), clear(03), clear(04), clear(05), clear(11), clear(12), clear(13), clear(14), clear(15), clear(21), clear(22), clear(23), clear(24), clear(25), clear(31), clear(32), clear(33), clear(35), clear(41), clear(43), clear(44), clear(45), clear(51), clear(52), clear(53), clear(54), clear(55), up(11,01), up(12,02), up(13,03), up(14,04), up(15,05), up(21,11), up(22,12), up(23,13), up(24,14), up(25,15), up(31,21), up(32,22), up(33,23), up(34,24), up(35,25), up(41,31), up(42,32), up(43,33), up(44,34), up(45,35), up(51,41), up(52,42), up(53,43), up(54,44), up(55,45), down(01,11), down(02,12), down(03,13), down(04,14), down(05,15), down(11,21), down(12,22), down(13,23), down(14,24), down(15,25), down(21,31), down(22,32), down(23,33), down(24,34), down(25,35), down(31,41), down(32,42), down(33,43), down(34,44), down(35,45), down(41,51), down(42,52), down(43,53), down(44,54), down(45,55), right(02,01), right(03,02), right(04,03), right(05,04), right(12,11), right(13,12), right(14,13), right(15,14), right(22,21), right(23,22), right(24,23), right(25,24), right(32,31), right(33,32), right(34,33), right(35,34), right(42,41), right(43,42), right(44,43), right(45,44), right(52,51), right(53,52), right(54,53), right(55,54), left(01,02), left(02,03), left(03,04), left(04,05), left(11,12), left(12,13), left(13,14), left(14,15), left(21,22), left(22,23), left(23,24), left(24,25), left(31,32), left(32,33), left(33,34), left(34,35), left(41,42), left(42,43), left(43,44), left(44,45), left(51,52), left(52,53), left(53,54), left(54,55)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(14,black), painted(15,white), painted(21,black), painted(22,white), painted(23,black), painted(24,white), painted(25,black), painted(31,white), painted(32,black), painted(33,white), painted(34,black), painted(35,white), painted(41,black), painted(42,white), painted(43,black), painted(44,white), painted(45,black), painted(51,white), painted(52,black), painted(53,white), painted(54,black), painted(55,white)], pddl(Init,Goal). p03642 => Init = $[ =(totalcost,0), robot_at(robot1,22), robot_has(robot1,white), robot_at(robot2,03), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(02), clear(04), clear(11), clear(12), clear(13), clear(14), clear(21), clear(23), clear(24), clear(31), clear(32), clear(33), clear(34), clear(41), clear(42), clear(43), clear(44), clear(51), clear(52), clear(53), clear(54), clear(61), clear(62), clear(63), clear(64), up(11,01), up(12,02), up(13,03), up(14,04), up(21,11), up(22,12), up(23,13), up(24,14), up(31,21), up(32,22), up(33,23), up(34,24), up(41,31), up(42,32), up(43,33), up(44,34), up(51,41), up(52,42), up(53,43), up(54,44), up(61,51), up(62,52), up(63,53), up(64,54), down(01,11), down(02,12), down(03,13), down(04,14), down(11,21), down(12,22), down(13,23), down(14,24), down(21,31), down(22,32), down(23,33), down(24,34), down(31,41), down(32,42), down(33,43), down(34,44), down(41,51), down(42,52), down(43,53), down(44,54), down(51,61), down(52,62), down(53,63), down(54,64), right(02,01), right(03,02), right(04,03), right(12,11), right(13,12), right(14,13), right(22,21), right(23,22), right(24,23), right(32,31), right(33,32), right(34,33), right(42,41), right(43,42), right(44,43), right(52,51), right(53,52), right(54,53), right(62,61), right(63,62), right(64,63), left(01,02), left(02,03), left(03,04), left(11,12), left(12,13), left(13,14), left(21,22), left(22,23), left(23,24), left(31,32), left(32,33), left(33,34), left(41,42), left(42,43), left(43,44), left(51,52), left(52,53), left(53,54), left(61,62), left(62,63), left(63,64)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(14,black), painted(21,black), painted(22,white), painted(23,black), painted(24,white), painted(31,white), painted(32,black), painted(33,white), painted(34,black), painted(41,black), painted(42,white), painted(43,black), painted(44,white), painted(51,white), painted(52,black), painted(53,white), painted(54,black), painted(61,black), painted(62,white), painted(63,black), painted(64,white)], pddl(Init,Goal). p03652 => Init = $[ =(totalcost,0), robot_at(robot1,44), robot_has(robot1,white), robot_at(robot2,23), robot_has(robot2,black), available_color(white), available_color(black), clear(01), clear(02), clear(03), clear(04), clear(05), clear(11), clear(12), clear(13), clear(14), clear(15), clear(21), clear(22), clear(24), clear(25), clear(31), clear(32), clear(33), clear(34), clear(35), clear(41), clear(42), clear(43), clear(45), clear(51), clear(52), clear(53), clear(54), clear(55), clear(61), clear(62), clear(63), clear(64), clear(65), up(11,01), up(12,02), up(13,03), up(14,04), up(15,05), up(21,11), up(22,12), up(23,13), up(24,14), up(25,15), up(31,21), up(32,22), up(33,23), up(34,24), up(35,25), up(41,31), up(42,32), up(43,33), up(44,34), up(45,35), up(51,41), up(52,42), up(53,43), up(54,44), up(55,45), up(61,51), up(62,52), up(63,53), up(64,54), up(65,55), down(01,11), down(02,12), down(03,13), down(04,14), down(05,15), down(11,21), down(12,22), down(13,23), down(14,24), down(15,25), down(21,31), down(22,32), down(23,33), down(24,34), down(25,35), down(31,41), down(32,42), down(33,43), down(34,44), down(35,45), down(41,51), down(42,52), down(43,53), down(44,54), down(45,55), down(51,61), down(52,62), down(53,63), down(54,64), down(55,65), right(02,01), right(03,02), right(04,03), right(05,04), right(12,11), right(13,12), right(14,13), right(15,14), right(22,21), right(23,22), right(24,23), right(25,24), right(32,31), right(33,32), right(34,33), right(35,34), right(42,41), right(43,42), right(44,43), right(45,44), right(52,51), right(53,52), right(54,53), right(55,54), right(62,61), right(63,62), right(64,63), right(65,64), left(01,02), left(02,03), left(03,04), left(04,05), left(11,12), left(12,13), left(13,14), left(14,15), left(21,22), left(22,23), left(23,24), left(24,25), left(31,32), left(32,33), left(33,34), left(34,35), left(41,42), left(42,43), left(43,44), left(44,45), left(51,52), left(52,53), left(53,54), left(54,55), left(61,62), left(62,63), left(63,64), left(64,65)], Goal = $[ painted(11,white), painted(12,black), painted(13,white), painted(14,black), painted(15,white), painted(21,black), painted(22,white), painted(23,black), painted(24,white), painted(25,black), painted(31,white), painted(32,black), painted(33,white), painted(34,black), painted(35,white), painted(41,black), painted(42,white), painted(43,black), painted(44,white), painted(45,black), painted(51,white), painted(52,black), painted(53,white), painted(54,black), painted(55,white), painted(61,black), painted(62,white), painted(63,black), painted(64,white), painted(65,black)], pddl(Init,Goal).