Analisador Sintático: PDDL

Preâmbulo

O objetivo deste exercício é desenvolver um analisador sintático para um subconjunto da linguagem de descrição Planning Domain Definition Language (PDDL). Seu programa deve receber como argumento dois arquivos: um contendo uma descrição de domínio e outro contendo uma descrição de problema, ambos em PDDL. O programa deve analisar o conteúdo e responder se os códigos-fonte from aceitos ou não sitaticamente, caso não, deverá também apresentar a linha do arquivo na qual o primeiro erro foi encontrado.

Entrada

Seu programa deverá receber como parâmetro dois arquivos de texto nos quais contenham os modelos-fonte de domínio e problema em PDDL a serem analisados, respectivamente nessa ordem.

Saída

O seu programa deverá imprimir, via stdout, uma única linha para cada entrada conforme as seguintes regras:

  1. Imprima Accepted se o código estiver sintaticamente correto.
  2. Imprima Rejected: <file> at line N se houver um erro sintático. Substitua <file><file> pelo nome do arquivo e NN pelo número da linha na qual o primeiro erro foi encontrado.

Regras de Prioridade:

O formato de saída deve ser exatamente como mostrado no exemplo abaixo.

Exemplos

Exemplo de entrada

domain.pddl

(define (domain fliaswitch)
	(:requirements :strips)
	(:predicates (switch-is-on) (switch-is-off))
	(:action switch-on
		:parameters ()
		:precondition (switch-is-off)
		:effect (and (switch-is-on) (not (switch-is-off))))
	(:action switch-off
		:parameters ()
		:precondition (switch-is-on)
		:effect (and (switch-is-off) (not (switch-is-on)))))

problem.pddl

(define (problem turn-it-on)
	(:domain fliaswitch)
	(:init (switch-is-off))
	(:goal (switch-is-on)))

Saída para o exemplo acima

Accepted

Exemplo de entrada

domain.pddl

(define (domain caminhando)
	;; BCR compra dindin na FGA :)
	(:types lugar dindin)
	(:predicates
		(Ligado ?l1 ?l2 - lugar)
		(estou-em ?l - lugar)
		(passei-em ?l - lugar)
		(comprar-dindin ?d - dindin)
		(tem-dindin ?d - dindin)
		(lugar-eh ?l1 ?l2 - lugar))
	(:action mover
		:parameters (?l1 ?l2 - lugar)
		:precondition (and (estou-em ?l1) (or (Ligado ?l1 ?l2) (Ligado ?l2 ?l1)))
		:effect (and (not (estou-em ?l1)) (passei-em ?l2) (estou-em ?l2)
			(not (lugar-eh ?l1 ?l1)) (lugar-eh ?l2 ?l2)))
	(:action comprardindin
		:parameters (?l - lugar ?d - dindin)
		:precondition (and (lugar-eh ?l DindinGourmet) (tem-dindin ?d))
		:effect (and (comprar-dindin ?d) (not (tem-dindin ?d))))
	(:action comprar-todos-dindin
		:parameters (?l - lugar)
		:precondition (and (forall (?d - dindin) (tem-dindin ?d)) (lugar-eh ?l DindinGourmet))
		:effect (forall (?d - dindin) (and (comprar-dindin ?d) 
			(not (tem-dindin ?d)))))
	(:action terremoto
		:parameters ()
		:precondition (forall (?l - lugar) (and (forall (?d - dindin) (and))))
		:effect (forall (?l1 - lugar) (forall (?l2 - lugar)
			(not (Ligado ?l1 ?l2))))))

problem.pddl

(define (problem indoparaobrt)
	(:domain caminhando)
	(:objects S7 CorredorS Escada CorredorI Patio IO-UAC Calcada-UAC Calcada-UED SaidaP1 DindinGourmet SaidaCarro1 SaidaP2 PistaCooper Avenida BrT - lugar
		d1 d2 d3 d4 d5 d6 d7 d8 d9 - dindin)
	(:init
		(Ligado S7 CorredorS)
		(Ligado CorredorS Escada)
		(Ligado Escada CorredorI)
		(Ligado CorredorI Patio)
		(Ligado Patio IO-UAC)
		(Ligado IO-UAC Calcada-UAC)
		(Ligado Calcada-UAC Calcada-UED)
		(Ligado Calcada-UED DindinGourmet)
		(Ligado Calcada-UED SaidaP1)
		(Ligado Calcada-UED SaidaP2)
		(Ligado Calcada-UED SaidaCarro1)
		(Ligado SaidaP1 PistaCooper)
		(Ligado SaidaP2 PistaCooper)
		(Ligado SaidaCarro1 PistaCooper)
		(Ligado PistaCooper Avenida)
		(Ligado Avenida BrT)
		(estou-em S7)
		(lugar-eh S7 S7)
		(passei-em S7)
		(tem-dindin d1)
		(tem-dindin d2)
		(tem-dindin d3)
		(tem-dindin d4)
		(tem-dindin d5)
		(tem-dindin d6)
		(tem-dindin d7)
		(tem-dindin d8)
		(tem-dindin d9)) 
	;; REMOVE '(' BEFORE forall
	(:goal (and (estou-em Calcada-UED) forall (?d - dindin) (not (tem-dindin ?d))) (not (Ligado Calcada-UED SaidaP1)))))

Saída para o exemplo acima

Rejected: /tmp/in/problem-fga.pddl at line 35

Exemplo de entrada

domain.pddl

(define (:types lugar dindin)
	(domain caminhando)
	;; BCR compra dindin na FGA :)
	(:predicates
		(Ligado ?l1 ?l2 - lugar)
		(estou-em ?l - lugar)
		(passei-em ?l - lugar)
		(comprar-dindin ?d - dindin)
		(tem-dindin ?d - dindin)
		(lugar-eh ?l1 ?l2 - lugar))
	(:action mover
		:parameters (?l1 ?l2 - lugar)
		:precondition (and (estou-em ?l1) (or (Ligado ?l1 ?l2) (Ligado ?l2 ?l1)))
		:effect (and (not (estou-em ?l1)) (passei-em ?l2) (estou-em ?l2)
			(not (lugar-eh ?l1 ?l1)) (lugar-eh ?l2 ?l2)))
	(:action comprardindin
		:parameters (?l - lugar ?d - dindin)
		:precondition (and (lugar-eh ?l DindinGourmet) (tem-dindin ?d))
		:effect (and (comprar-dindin ?d) (not (tem-dindin ?d))))
	(:action comprar-todos-dindin
		:parameters (?l - lugar)
		:precondition (and (forall (?d - dindin) (tem-dindin ?d)) (lugar-eh ?l DindinGourmet))
		:effect (forall (?d - dindin) (and (comprar-dindin ?d) 
			(not (tem-dindin ?d)))))
	(:action terremoto
		:parameters ()
		:precondition (forall (?l - lugar) (and (forall (?d - dindin) (and))))
		:effect (forall (?l1 - lugar) (forall (?l2 - lugar)
			(not (Ligado ?l1 ?l2))))))

problem.pddl

(define (problem indoparaobrt)
	(:domain caminhando)
	(:objects S7 CorredorS Escada CorredorI Patio IO-UAC Calcada-UAC Calcada-UED SaidaP1 DindinGourmet SaidaCarro1 SaidaP2 PistaCooper Avenida BrT - lugar
		d1 d2 d3 d4 d5 d6 d7 d8 d9 - dindin)
	(:init
		(Ligado S7 CorredorS)
		(Ligado CorredorS Escada)
		(Ligado Escada CorredorI)
		(Ligado CorredorI Patio)
		(Ligado Patio IO-UAC)
		(Ligado IO-UAC Calcada-UAC)
		(Ligado Calcada-UAC Calcada-UED)
		(Ligado Calcada-UED DindinGourmet)
		(Ligado Calcada-UED SaidaP1)
		(Ligado Calcada-UED SaidaP2)
		(Ligado Calcada-UED SaidaCarro1)
		(Ligado SaidaP1 PistaCooper)
		(Ligado SaidaP2 PistaCooper)
		(Ligado SaidaCarro1 PistaCooper)
		(Ligado PistaCooper Avenida)
		(Ligado Avenida BrT)
		(estou-em S7)
		(lugar-eh S7 S7)
		(passei-em S7)
		(tem-dindin d1)
		(tem-dindin d2)
		(tem-dindin d3)
		(tem-dindin d4)
		(tem-dindin d5)
		(tem-dindin d6)
		(tem-dindin d7)
		(tem-dindin d8)
		(tem-dindin d9)) 
	;; BCR compra TUDO :0
	(:goal (and (estou-em Calcada-UED) (forall (?d - dindin) (not (tem-dindin ?d))) (not (Ligado Calcada-UED SaidaP1)))))

Saída para o exemplo acima

Rejected: /tmp/in/domain.pddl at line 1

Exemplo de entrada

domain.pddl

(define (domain fliaswitch)(:requirements :strips)(:predicates(switch-is-on)(switch-is-off))(:action switch-on :parameters() :precondition(switch-is-off) :effect(and(switch-is-on)(not(switch-is-off))))(:action switch-off :parameters() :precondition(switch-is-on) :effect(and(switch-is-off)(not(switch-is-on)))));; oneline no spaces

problem.pddl

(define(problem turn-it-on)(:domain fliaswitch)(:init(switch-is-off))(:goal(switch-is-on)));; oneline no spaces

Saída para o exemplo acima

Accepted

Exemplo de entrada

domain.pddl

(define (domain caminhando)
	;; BCR compra dindin na FGA :)
	(:types lugar dindin)
	(:predicates
		(Ligado ?l1 ?l2 - lugar)
		(estou-em ?l - lugar)
		(passei-em ?l - lugar)
		(comprar-dindin ?d - dindin)
		(tem-dindin ?d - dindin)
		(lugar-eh ?l1 ?l2 - lugar))
	(:action mover
		:parameters (?l1 ?l2 - lugar)
		:precondition (and (estou-em ?l1) (or (Ligado ?l1 ?l2) (Ligado ?l2 ?l1)))
		:effect (and (not (estou-em ?l1)) (passei-em ?l2) (estou-em ?l2)
			(not (lugar-eh ?l1 ?l1)) (lugar-eh ?l2 ?l2)))
	(:action comprardindin
		:parameters (?l - lugar ?d - dindin)
		:precondition (and (lugar-eh ?l DindinGourmet) (tem-dindin ?d))
		:effect (and (comprar-dindin ?d) (not (tem-dindin ?d))))
	(:action comprar-todos-dindin
		:parameters (?l - lugar)
		:precondition (and (forall (?d - dindin) (tem-dindin ?d)) (lugar-eh ?l DindinGourmet))
		:effect (forall (?d - dindin) (and (comprar-dindin ?d) 
			(not (tem-dindin ?d)))))
	(:action terremoto
		:parameters ()
		:precondition (forall (?l - lugar) (and (forall (?d - dindin) (and))))
		:effect (forall (?l1 - lugar) (forall (?l2 - lugar)
			(not (Ligado ?l1 ?l2))))))

problem.pddl

(define (problem indoparaobrt)
	(:domain caminhando)
	(:objects S7 CorredorS Escada CorredorI Patio IO-UAC Calcada-UAC Calcada-UED SaidaP1 DindinGourmet SaidaCarro1 SaidaP2 PistaCooper Avenida BrT - lugar
		d1 d2 d3 d4 d5 d6 d7 d8 d9 - dindin)
	(:init
		(Ligado S7 CorredorS)
		(Ligado CorredorS Escada)
		(Ligado Escada CorredorI)
		(Ligado CorredorI Patio)
		(Ligado Patio IO-UAC)
		(Ligado IO-UAC Calcada-UAC)
		(Ligado Calcada-UAC Calcada-UED)
		(Ligado Calcada-UED DindinGourmet)
		(Ligado Calcada-UED SaidaP1)
		(Ligado Calcada-UED SaidaP2)
		(Ligado Calcada-UED SaidaCarro1)
		(Ligado SaidaP1 PistaCooper)
		(Ligado SaidaP2 PistaCooper)
		(Ligado SaidaCarro1 PistaCooper)
		(Ligado PistaCooper Avenida)
		(Ligado Avenida BrT)
		(estou-em S7)
		(lugar-eh S7 S7)
		(passei-em S7)
		(tem-dindin d1)
		(tem-dindin d2)
		(tem-dindin d3)
		(tem-dindin d4)
		(tem-dindin d5)
		(tem-dindin d6)
		(tem-dindin d7)
		(tem-dindin d8)
		(tem-dindin d9)) 
	(:action NAO-POSSO-ESTAR-AQUI
		:parameters ()
		:precondition (and)
		:effect (and))
	;; BCR compra TUDO :0
	(:goal (and (estou-em Calcada-UED) (forall (?d - dindin) (not (tem-dindin ?d))) (not (Ligado Calcada-UED SaidaP1)))))

Saída para o exemplo acima

Rejected: /tmp/in/problem.pddl at line 34

Exemplo de entrada

domain.pddl

(define (domain snake)
(:requirements :strips :negative-preconditions)
(:constants
    dummypoint
)
(:predicates
    ;up down left right of a field
    (ISADJACENT ?x ?y)
    ;the last field of the snake
    (tailsnake ?x)
    ;the first field of the snake
    (headsnake ?x)
    ;pieces of the snake that are connected. from front to back
    (nextsnake ?x ?y)
    ;a field that is occupied by the snake or by an obstacle
    (blocked ?x)
    ;next point that will spawn
    (spawn ?x)
    ;point y will spawn after point x
    (NEXTSPAWN ?x ?y)
    ;a field that has a point that can be collected by the snake
    (ispoint ?x)
)
(:action move
	;; REMOVE '?' BEFORE newhead
    :parameters (?head newhead ?tail ?newtail)
    :precondition
    (and
        (headsnake ?head)
        (ISADJACENT ?head ?newhead)
        (tailsnake ?tail)
        (nextsnake ?newtail ?tail)
        (not (blocked ?newhead))
        (not (ispoint ?newhead))
    )
    :effect
    (and
        (blocked ?newhead)
        (headsnake ?newhead)
        (nextsnake ?newhead ?head)
        (not (headsnake ?head))
        (not (blocked ?tail))
        (not (tailsnake ?tail))
        (not (nextsnake ?newtail ?tail))
        (tailsnake ?newtail)
    )
)

(:action move-and-eat-spawn
    :parameters (?head ?newhead ?spawnpoint ?nextspawnpoint)
    :precondition
    (and
        (headsnake ?head)
        (ISADJACENT ?head ?newhead)
        (not (blocked ?newhead))
        (ispoint ?newhead)
        (spawn ?spawnpoint)
        (NEXTSPAWN ?spawnpoint ?nextspawnpoint)
        (not (= ?spawnpoint dummypoint))
    )
    :effect
    (and
        (blocked ?newhead)
        (headsnake ?newhead)
        (nextsnake ?newhead ?head)
        (not (headsnake ?head))
        (not (ispoint ?newhead))
        (ispoint ?spawnpoint)
        (not (spawn ?spawnpoint))
        (spawn ?nextspawnpoint)
    )
)

(:action move-and-eat-no-spawn
    :parameters (?head ?newhead)
    :precondition
    (and
        (headsnake ?head)
        (ISADJACENT ?head ?newhead)
        (not (blocked ?newhead))
        (ispoint ?newhead)
        (spawn dummypoint)
    )
    :effect
    (and
        (blocked ?newhead)
        (headsnake ?newhead)
        (nextsnake ?newhead ?head)
        (not (headsnake ?head))
        (not (ispoint ?newhead))
    )
)

)

problem.pddl

(define (problem snake-empty-5x5-1-5-10-11170)
(:domain snake)
(:objects
    pos0-0 pos0-1 pos0-2 pos0-3 pos0-4 pos1-0 pos1-1 pos1-2 pos1-3 pos1-4 pos2-0 pos2-1 pos2-2 pos2-3 pos2-4 pos3-0 pos3-1 pos3-2 pos3-3 pos3-4 pos4-0 pos4-1 pos4-2 pos4-3 pos4-4
)
(:init
    (ISADJACENT pos0-0 pos1-0)
    (ISADJACENT pos0-0 pos0-1)
    (ISADJACENT pos0-1 pos1-1)
    (ISADJACENT pos0-1 pos0-2)
    (ISADJACENT pos0-1 pos0-0)
    (ISADJACENT pos0-2 pos1-2)
    (ISADJACENT pos0-2 pos0-3)
    (ISADJACENT pos0-2 pos0-1)
    (ISADJACENT pos0-3 pos1-3)
    (ISADJACENT pos0-3 pos0-4)
    (ISADJACENT pos0-3 pos0-2)
    (ISADJACENT pos0-4 pos1-4)
    (ISADJACENT pos0-4 pos0-3)
    (ISADJACENT pos1-0 pos2-0)
    (ISADJACENT pos1-0 pos1-1)
    (ISADJACENT pos1-0 pos0-0)
    (ISADJACENT pos1-1 pos2-1)
    (ISADJACENT pos1-1 pos1-2)
    (ISADJACENT pos1-1 pos0-1)
    (ISADJACENT pos1-1 pos1-0)
    (ISADJACENT pos1-2 pos2-2)
    (ISADJACENT pos1-2 pos1-3)
    (ISADJACENT pos1-2 pos0-2)
    (ISADJACENT pos1-2 pos1-1)
    (ISADJACENT pos1-3 pos2-3)
    (ISADJACENT pos1-3 pos1-4)
    (ISADJACENT pos1-3 pos0-3)
    (ISADJACENT pos1-3 pos1-2)
    (ISADJACENT pos1-4 pos2-4)
    (ISADJACENT pos1-4 pos0-4)
    (ISADJACENT pos1-4 pos1-3)
    (ISADJACENT pos2-0 pos3-0)
    (ISADJACENT pos2-0 pos2-1)
    (ISADJACENT pos2-0 pos1-0)
    (ISADJACENT pos2-1 pos3-1)
    (ISADJACENT pos2-1 pos2-2)
    (ISADJACENT pos2-1 pos1-1)
    (ISADJACENT pos2-1 pos2-0)
    (ISADJACENT pos2-2 pos3-2)
    (ISADJACENT pos2-2 pos2-3)
    (ISADJACENT pos2-2 pos1-2)
    (ISADJACENT pos2-2 pos2-1)
    (ISADJACENT pos2-3 pos3-3)
    (ISADJACENT pos2-3 pos2-4)
    (ISADJACENT pos2-3 pos1-3)
    (ISADJACENT pos2-3 pos2-2)
    (ISADJACENT pos2-4 pos3-4)
    (ISADJACENT pos2-4 pos1-4)
    (ISADJACENT pos2-4 pos2-3)
    (ISADJACENT pos3-0 pos4-0)
    (ISADJACENT pos3-0 pos3-1)
    (ISADJACENT pos3-0 pos2-0)
    (ISADJACENT pos3-1 pos4-1)
    (ISADJACENT pos3-1 pos3-2)
    (ISADJACENT pos3-1 pos2-1)
    (ISADJACENT pos3-1 pos3-0)
    (ISADJACENT pos3-2 pos4-2)
    (ISADJACENT pos3-2 pos3-3)
    (ISADJACENT pos3-2 pos2-2)
    (ISADJACENT pos3-2 pos3-1)
    (ISADJACENT pos3-3 pos4-3)
    (ISADJACENT pos3-3 pos3-4)
    (ISADJACENT pos3-3 pos2-3)
    (ISADJACENT pos3-3 pos3-2)
    (ISADJACENT pos3-4 pos4-4)
    (ISADJACENT pos3-4 pos2-4)
    (ISADJACENT pos3-4 pos3-3)
    (ISADJACENT pos4-0 pos4-1)
    (ISADJACENT pos4-0 pos3-0)
    (ISADJACENT pos4-1 pos4-2)
    (ISADJACENT pos4-1 pos3-1)
    (ISADJACENT pos4-1 pos4-0)
    (ISADJACENT pos4-2 pos4-3)
    (ISADJACENT pos4-2 pos3-2)
    (ISADJACENT pos4-2 pos4-1)
    (ISADJACENT pos4-3 pos4-4)
    (ISADJACENT pos4-3 pos3-3)
    (ISADJACENT pos4-3 pos4-2)
    (ISADJACENT pos4-4 pos3-4)
    (ISADJACENT pos4-4 pos4-3)
    (tailsnake pos3-0)
    (headsnake pos4-0)
    (nextsnake pos4-0 pos3-0)
    (blocked pos3-0)
    (blocked pos4-0)
    (spawn pos2-0)
    (NEXTSPAWN pos1-0 dummypoint)
    (NEXTSPAWN pos2-0 pos1-4)
    (NEXTSPAWN pos1-4 pos1-1)
    (NEXTSPAWN pos1-1 pos0-1)
    (NEXTSPAWN pos0-1 pos3-3)
    (NEXTSPAWN pos3-3 pos4-2)
    (NEXTSPAWN pos4-2 pos3-4)
    (NEXTSPAWN pos3-4 pos0-0)
    (NEXTSPAWN pos0-0 pos1-2)
    (NEXTSPAWN pos1-2 pos1-0)
    (ispoint pos0-4)
    (ispoint pos3-1)
    (ispoint pos1-3)
    (ispoint pos2-4)
    (ispoint pos4-1)
)
(:goal
(and
    (not (ispoint pos0-4))
    (not (ispoint pos3-1))
    (not (ispoint pos1-3))
    (not (ispoint pos2-4))
    (not (ispoint pos4-1))
    (not (ispoint pos2-0))
    (not (ispoint pos1-4))
    (not (ispoint pos1-1))
    (not (ispoint pos0-1))
    (not (ispoint pos3-3))
    (not (ispoint pos4-2))
    (not (ispoint pos3-4))
    (not (ispoint pos0-0))
    (not (ispoint pos1-2))
    (not (ispoint pos1-0))
)
)
)

Saída para o exemplo acima

Rejected: /tmp/in/domain-snake.pddl at line 26

Exemplo de entrada

domain.pddl

(define (domain ricochet-robots)
(:requirements :typing :adl :action-costs)

(:types
    robot - object
    cell - object
    direction - object
)

(:predicates
    ;; ?cnext is right next to ?c in the direction of ?dir
    (NEXT ?c - cell ?cnext - cell ?dir - direction)
    ;; moving from ?c in the direction ?dir is blocked
    (BLOCKED ?c - cell ?dir - direction)
    ;; Robot ?r is located in the cell ?c
    (at ?r - robot ?c - cell)
    ;; No robot is located in the cell ?c
    (free ?c - cell)
    ;; No robot is moving anywhere
    (nothing-is-moving)
    ;; Robot ?r is moving in the direction ?dir
    (is-moving ?r - robot ?dir - direction)
)

(:functions
    (total-cost) - number

    ;; The costs of actions are configurable.
    ;; If we want to count only the number of movements of robots instead of
    ;; counting all steps from a cell to cell (as it would be in the real
    ;; game), then we need to set
    ;;      (= (go-cost) 1)
    ;;      (= (step-cost) 0)
    ;;      (= (stop-cost) 0)
    (go-cost) - number
    (step-cost) - number
    (stop-cost) - number
)

;; Starts movement of the robot ?r in the direction ?dir
(:action go
    :parameters (?r - robot ?dir - direction)
    :precondition
        (and
            (nothing-is-moving)

            ;; If we want to make sure that the robot can actually make a step
            ;; in the specified direction, then we need to add the following
            ;; (and the corresponding parameters ?cfrom and ?cto):
            ;;
            ;; (at ?r ?cfrom)
            ;; (NEXT ?cfrom ?cto ?dir)
            ;; (free ?cto)
            ;; (not (BLOCKED ?cfrom ?dir))
        )
    :effect
        (and
            (not (nothing-is-moving))
            (is-moving ?r ?dir)
            (increase (total-cost) (go-cost))
        )
)

;; Make one step from the cell ?cfrom to the cell ?cto with the robot ?r
;; Robot is allowed to make the step only if it is the (only) one currently
;; moving, and it is moving in the direction ?dir
(:action step
    :parameters (?r - robot ?cfrom - cell ?cto - cell ?dir - direction)
    :precondition
        (and
            (is-moving ?r ?dir)
            (at ?r ?cfrom)
            (NEXT ?cfrom ?cto ?dir)
            (free ?cto)
            (not (BLOCKED ?cfrom ?dir))
        )
    :effect
        (and
            (not (at ?r ?cfrom))
            (free ?cfrom)
            (not (free ?cto))
            (at ?r ?cto)
            (increase (total-cost) (step-cost))
        )
)

;; Stopping of the robot is split between
;; (i) stop-at-barrier which stops the robot if it cannot move further due to
;;     a barrier expressed with (BLOCKED ...) predicate
;; (ii) stop-at-robot which stops the robot if the next step is blocked by
;;      another robot
(:action stop-at-barrier
    :parameters (?r - robot ?cat - cell ?dir - direction)
    :precondition
        (and
            (is-moving ?r ?dir)
            (at ?r ?cat)
            (BLOCKED ?cat ?dir)
        )
    :effect
        (and
            (not (is-moving ?r ?dir))
            (nothing-is-moving)
            (increase (total-cost) (stop-cost))
        )
)

(:action stop-at-robot
    :parameters (?r - robot ?cat - cell ?cnext - cell ?dir - direction)
    :precondition
        (and
            (is-moving ?r ?dir)
            (at ?r ?cat)
            (NEXT ?cat ?cnext ?dir)
            (not (free ?cnext))
        )
    :effect
        (and
            (not (is-moving ?r ?dir))
            (nothing-is-moving)
            (increase (total-cost) (stop-cost))
        )
)
)

problem.pddl

;; Generated from file 001-ricochetrobot-12-0.asp from the ASP competition 2015
;;
;; +xx+xx+xx+xx+xx+xx+xx+xx+xx+xx+xx+xx+xx+xx+xx+xx+
;; xR1|  x  |  |  |  |  |  |  |  x  |  |  |  |  |R3x
;; +--+--+--+--+xx+--+--+--+--+--+--+--+--+--+xx+--+
;; x  |  |  |  x  |  |  |  |  |  |  |  |  |  x  |  x
;; +--+xx+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
;; x  |  x  |  |  |  |  |  |  |  |  x  |  |  |  |  x
;; +--+--+--+--+--+--+--+--+--+--+--+xx+--+--+--+--+
;; x  |  |  |  |  |  |  x  |  |  |  |  |  |  |  |  x
;; +--+--+--+--+--+--+xx+--+--+--+--+--+--+--+--+xx+
;; x  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  x
;; +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
;; x  |  |  |  |  |  |  |  |G1|  |  |  |  |  |  |  x
;; +xx+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
;; x  |  |  x  |  |  |  |  |  |  |  |  |  |  x  |  x
;; +--+--+--+xx+--+--+--+xx+xx+--+xx+--+--+xx+--+--+
;; x  |  |  |  |  |  |  x  |  x  |  x  |  |  |  |  x
;; +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
;; x  |  |  |  |  |  |  x  |  x  |  |  |  |  |  |  x
;; +--+--+--+--+--+--+--+xx+xx+--+--+--+--+--+--+xx+
;; x  |  |  |  x  |  |  |  |  |  |  |  |  |  |  |  x
;; +--+xx+--+--+xx+--+--+--+xx+--+--+--+--+xx+--+--+
;; x  |  x  |  |  |  |  |  x  |  |  |  |  x  |  |  x
;; +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
;; x  |  |  |  |  |  |  |  |  |  |  x  |  |  |  |  x
;; +xx+--+--+--+--+--+--+--+--+--+xx+--+--+--+--+--+
;; x  |  |  |  |  |  |  |  |  |  |  |  |  |  x  |  x
;; +--+--+--+--+--+--+xx+--+--+--+--+--+--+--+xx+--+
;; x  |  |  |  |  |  x  |  |  |  |  |  |  |  |  |  x
;; +--+--+--+--+--+--+--+--+--+xx+--+--+--+--+--+--+
;; x  |  |  x  |  |  |  |  |  |  x  |  |  |  |  |  x
;; +--+--+xx+--+--+--+--+--+--+--+--+--+--+--+--+--+
;; xR2|  |  |  x  |  |  |  |  |  |  |  x  |  |  |R4x
;; +xx+xx+xx+xx+xx+xx+xx+xx+xx+xx+xx+xx+xx+xx+xx+xx+

(define (problem ricochet-robots-16x16-12-759989)
(:domain ricochet-robots)

(:objects
    cell-1-1 cell-1-2 cell-1-3 cell-1-4 cell-1-5 cell-1-6 cell-1-7 cell-1-8 cell-1-9 cell-1-10 cell-1-11 cell-1-12 cell-1-13 cell-1-14 cell-1-15 cell-1-16 cell-2-1 cell-2-2 cell-2-3 cell-2-4 cell-2-5 cell-2-6 cell-2-7 cell-2-8 cell-2-9 cell-2-10 cell-2-11 cell-2-12 cell-2-13 cell-2-14 cell-2-15 cell-2-16 cell-3-1 cell-3-2 cell-3-3 cell-3-4 cell-3-5 cell-3-6 cell-3-7 cell-3-8 cell-3-9 cell-3-10 cell-3-11 cell-3-12 cell-3-13 cell-3-14 cell-3-15 cell-3-16 cell-4-1 cell-4-2 cell-4-3 cell-4-4 cell-4-5 cell-4-6 cell-4-7 cell-4-8 cell-4-9 cell-4-10 cell-4-11 cell-4-12 cell-4-13 cell-4-14 cell-4-15 cell-4-16 cell-5-1 cell-5-2 cell-5-3 cell-5-4 cell-5-5 cell-5-6 cell-5-7 cell-5-8 cell-5-9 cell-5-10 cell-5-11 cell-5-12 cell-5-13 cell-5-14 cell-5-15 cell-5-16 cell-6-1 cell-6-2 cell-6-3 cell-6-4 cell-6-5 cell-6-6 cell-6-7 cell-6-8 cell-6-9 cell-6-10 cell-6-11 cell-6-12 cell-6-13 cell-6-14 cell-6-15 cell-6-16 cell-7-1 cell-7-2 cell-7-3 cell-7-4 cell-7-5 cell-7-6 cell-7-7 cell-7-8 cell-7-9 cell-7-10 cell-7-11 cell-7-12 cell-7-13 cell-7-14 cell-7-15 cell-7-16 cell-8-1 cell-8-2 cell-8-3 cell-8-4 cell-8-5 cell-8-6 cell-8-7 cell-8-8 cell-8-9 cell-8-10 cell-8-11 cell-8-12 cell-8-13 cell-8-14 cell-8-15 cell-8-16 cell-9-1 cell-9-2 cell-9-3 cell-9-4 cell-9-5 cell-9-6 cell-9-7 cell-9-8 cell-9-9 cell-9-10 cell-9-11 cell-9-12 cell-9-13 cell-9-14 cell-9-15 cell-9-16 cell-10-1 cell-10-2 cell-10-3 cell-10-4 cell-10-5 cell-10-6 cell-10-7 cell-10-8 cell-10-9 cell-10-10 cell-10-11 cell-10-12 cell-10-13 cell-10-14 cell-10-15 cell-10-16 cell-11-1 cell-11-2 cell-11-3 cell-11-4 cell-11-5 cell-11-6 cell-11-7 cell-11-8 cell-11-9 cell-11-10 cell-11-11 cell-11-12 cell-11-13 cell-11-14 cell-11-15 cell-11-16 cell-12-1 cell-12-2 cell-12-3 cell-12-4 cell-12-5 cell-12-6 cell-12-7 cell-12-8 cell-12-9 cell-12-10 cell-12-11 cell-12-12 cell-12-13 cell-12-14 cell-12-15 cell-12-16 cell-13-1 cell-13-2 cell-13-3 cell-13-4 cell-13-5 cell-13-6 cell-13-7 cell-13-8 cell-13-9 cell-13-10 cell-13-11 cell-13-12 cell-13-13 cell-13-14 cell-13-15 cell-13-16 cell-14-1 cell-14-2 cell-14-3 cell-14-4 cell-14-5 cell-14-6 cell-14-7 cell-14-8 cell-14-9 cell-14-10 cell-14-11 cell-14-12 cell-14-13 cell-14-14 cell-14-15 cell-14-16 cell-15-1 cell-15-2 cell-15-3 cell-15-4 cell-15-5 cell-15-6 cell-15-7 cell-15-8 cell-15-9 cell-15-10 cell-15-11 cell-15-12 cell-15-13 cell-15-14 cell-15-15 cell-15-16 cell-16-1 cell-16-2 cell-16-3 cell-16-4 cell-16-5 cell-16-6 cell-16-7 cell-16-8 cell-16-9 cell-16-10 cell-16-11 cell-16-12 cell-16-13 cell-16-14 cell-16-15 cell-16-16 - cell
    robot-2 robot-3 robot-1 robot-4 - robot
    west east north south - direction
)

(:init
    (NEXT cell-1-1 cell-1-2 south)
    (NEXT cell-1-2 cell-1-3 south)
    (NEXT cell-1-3 cell-1-4 south)
    (NEXT cell-1-4 cell-1-5 south)
    (NEXT cell-1-5 cell-1-6 south)
    (NEXT cell-1-6 cell-1-7 south)
    (NEXT cell-1-7 cell-1-8 south)
    (NEXT cell-1-8 cell-1-9 south)
    (NEXT cell-1-9 cell-1-10 south)
    (NEXT cell-1-10 cell-1-11 south)
    (NEXT cell-1-11 cell-1-12 south)
    (NEXT cell-1-12 cell-1-13 south)
    (NEXT cell-1-13 cell-1-14 south)
    (NEXT cell-1-14 cell-1-15 south)
    (NEXT cell-1-15 cell-1-16 south)
    (NEXT cell-2-1 cell-2-2 south)
    (NEXT cell-2-2 cell-2-3 south)
    (NEXT cell-2-3 cell-2-4 south)
    (NEXT cell-2-4 cell-2-5 south)
    (NEXT cell-2-5 cell-2-6 south)
    (NEXT cell-2-6 cell-2-7 south)
    (NEXT cell-2-7 cell-2-8 south)
    (NEXT cell-2-8 cell-2-9 south)
    (NEXT cell-2-9 cell-2-10 south)
    (NEXT cell-2-10 cell-2-11 south)
    (NEXT cell-2-11 cell-2-12 south)
    (NEXT cell-2-12 cell-2-13 south)
    (NEXT cell-2-13 cell-2-14 south)
    (NEXT cell-2-14 cell-2-15 south)
    (NEXT cell-2-15 cell-2-16 south)
    (NEXT cell-3-1 cell-3-2 south)
    (NEXT cell-3-2 cell-3-3 south)
    (NEXT cell-3-3 cell-3-4 south)
    (NEXT cell-3-4 cell-3-5 south)
    (NEXT cell-3-5 cell-3-6 south)
    (NEXT cell-3-6 cell-3-7 south)
    (NEXT cell-3-7 cell-3-8 south)
    (NEXT cell-3-8 cell-3-9 south)
    (NEXT cell-3-9 cell-3-10 south)
    (NEXT cell-3-10 cell-3-11 south)
    (NEXT cell-3-11 cell-3-12 south)
    (NEXT cell-3-12 cell-3-13 south)
    (NEXT cell-3-13 cell-3-14 south)
    (NEXT cell-3-14 cell-3-15 south)
    (NEXT cell-3-15 cell-3-16 south)
    (NEXT cell-4-1 cell-4-2 south)
    (NEXT cell-4-2 cell-4-3 south)
    (NEXT cell-4-3 cell-4-4 south)
    (NEXT cell-4-4 cell-4-5 south)
    (NEXT cell-4-5 cell-4-6 south)
    (NEXT cell-4-6 cell-4-7 south)
    (NEXT cell-4-7 cell-4-8 south)
    (NEXT cell-4-8 cell-4-9 south)
    (NEXT cell-4-9 cell-4-10 south)
    (NEXT cell-4-10 cell-4-11 south)
    (NEXT cell-4-11 cell-4-12 south)
    (NEXT cell-4-12 cell-4-13 south)
    (NEXT cell-4-13 cell-4-14 south)
    (NEXT cell-4-14 cell-4-15 south)
    (NEXT cell-4-15 cell-4-16 south)
    (NEXT cell-5-1 cell-5-2 south)
    (NEXT cell-5-2 cell-5-3 south)
    (NEXT cell-5-3 cell-5-4 south)
    (NEXT cell-5-4 cell-5-5 south)
    (NEXT cell-5-5 cell-5-6 south)
    (NEXT cell-5-6 cell-5-7 south)
    (NEXT cell-5-7 cell-5-8 south)
    (NEXT cell-5-8 cell-5-9 south)
    (NEXT cell-5-9 cell-5-10 south)
    (NEXT cell-5-10 cell-5-11 south)
    (NEXT cell-5-11 cell-5-12 south)
    (NEXT cell-5-12 cell-5-13 south)
    (NEXT cell-5-13 cell-5-14 south)
    (NEXT cell-5-14 cell-5-15 south)
    (NEXT cell-5-15 cell-5-16 south)
    (NEXT cell-6-1 cell-6-2 south)
    (NEXT cell-6-2 cell-6-3 south)
    (NEXT cell-6-3 cell-6-4 south)
    (NEXT cell-6-4 cell-6-5 south)
    (NEXT cell-6-5 cell-6-6 south)
    (NEXT cell-6-6 cell-6-7 south)
    (NEXT cell-6-7 cell-6-8 south)
    (NEXT cell-6-8 cell-6-9 south)
    (NEXT cell-6-9 cell-6-10 south)
    (NEXT cell-6-10 cell-6-11 south)
    (NEXT cell-6-11 cell-6-12 south)
    (NEXT cell-6-12 cell-6-13 south)
    (NEXT cell-6-13 cell-6-14 south)
    (NEXT cell-6-14 cell-6-15 south)
    (NEXT cell-6-15 cell-6-16 south)
    (NEXT cell-7-1 cell-7-2 south)
    (NEXT cell-7-2 cell-7-3 south)
    (NEXT cell-7-3 cell-7-4 south)
    (NEXT cell-7-4 cell-7-5 south)
    (NEXT cell-7-5 cell-7-6 south)
    (NEXT cell-7-6 cell-7-7 south)
    (NEXT cell-7-7 cell-7-8 south)
    (NEXT cell-7-8 cell-7-9 south)
    (NEXT cell-7-9 cell-7-10 south)
    (NEXT cell-7-10 cell-7-11 south)
    (NEXT cell-7-11 cell-7-12 south)
    (NEXT cell-7-12 cell-7-13 south)
    (NEXT cell-7-13 cell-7-14 south)
    (NEXT cell-7-14 cell-7-15 south)
    (NEXT cell-7-15 cell-7-16 south)
    (NEXT cell-8-1 cell-8-2 south)
    (NEXT cell-8-2 cell-8-3 south)
    (NEXT cell-8-3 cell-8-4 south)
    (NEXT cell-8-4 cell-8-5 south)
    (NEXT cell-8-5 cell-8-6 south)
    (NEXT cell-8-6 cell-8-7 south)
    (NEXT cell-8-7 cell-8-8 south)
    (NEXT cell-8-8 cell-8-9 south)
    (NEXT cell-8-9 cell-8-10 south)
    (NEXT cell-8-10 cell-8-11 south)
    (NEXT cell-8-11 cell-8-12 south)
    (NEXT cell-8-12 cell-8-13 south)
    (NEXT cell-8-13 cell-8-14 south)
    (NEXT cell-8-14 cell-8-15 south)
    (NEXT cell-8-15 cell-8-16 south)
    (NEXT cell-9-1 cell-9-2 south)
    (NEXT cell-9-2 cell-9-3 south)
    (NEXT cell-9-3 cell-9-4 south)
    (NEXT cell-9-4 cell-9-5 south)
    (NEXT cell-9-5 cell-9-6 south)
    (NEXT cell-9-6 cell-9-7 south)
    (NEXT cell-9-7 cell-9-8 south)
    (NEXT cell-9-8 cell-9-9 south)
    (NEXT cell-9-9 cell-9-10 south)
    (NEXT cell-9-10 cell-9-11 south)
    (NEXT cell-9-11 cell-9-12 south)
    (NEXT cell-9-12 cell-9-13 south)
    (NEXT cell-9-13 cell-9-14 south)
    (NEXT cell-9-14 cell-9-15 south)
    (NEXT cell-9-15 cell-9-16 south)
    (NEXT cell-10-1 cell-10-2 south)
    (NEXT cell-10-2 cell-10-3 south)
    (NEXT cell-10-3 cell-10-4 south)
    (NEXT cell-10-4 cell-10-5 south)
    (NEXT cell-10-5 cell-10-6 south)
    (NEXT cell-10-6 cell-10-7 south)
    (NEXT cell-10-7 cell-10-8 south)
    (NEXT cell-10-8 cell-10-9 south)
    (NEXT cell-10-9 cell-10-10 south)
    (NEXT cell-10-10 cell-10-11 south)
    (NEXT cell-10-11 cell-10-12 south)
    (NEXT cell-10-12 cell-10-13 south)
    (NEXT cell-10-13 cell-10-14 south)
    (NEXT cell-10-14 cell-10-15 south)
    (NEXT cell-10-15 cell-10-16 south)
    (NEXT cell-11-1 cell-11-2 south)
    (NEXT cell-11-2 cell-11-3 south)
    (NEXT cell-11-3 cell-11-4 south)
    (NEXT cell-11-4 cell-11-5 south)
    (NEXT cell-11-5 cell-11-6 south)
    (NEXT cell-11-6 cell-11-7 south)
    (NEXT cell-11-7 cell-11-8 south)
    (NEXT cell-11-8 cell-11-9 south)
    (NEXT cell-11-9 cell-11-10 south)
    (NEXT cell-11-10 cell-11-11 south)
    (NEXT cell-11-11 cell-11-12 south)
    (NEXT cell-11-12 cell-11-13 south)
    (NEXT cell-11-13 cell-11-14 south)
    (NEXT cell-11-14 cell-11-15 south)
    (NEXT cell-11-15 cell-11-16 south)
    (NEXT cell-12-1 cell-12-2 south)
    (NEXT cell-12-2 cell-12-3 south)
    (NEXT cell-12-3 cell-12-4 south)
    (NEXT cell-12-4 cell-12-5 south)
    (NEXT cell-12-5 cell-12-6 south)
    (NEXT cell-12-6 cell-12-7 south)
    (NEXT cell-12-7 cell-12-8 south)
    (NEXT cell-12-8 cell-12-9 south)
    (NEXT cell-12-9 cell-12-10 south)
    (NEXT cell-12-10 cell-12-11 south)
    (NEXT cell-12-11 cell-12-12 south)
    (NEXT cell-12-12 cell-12-13 south)
    (NEXT cell-12-13 cell-12-14 south)
    (NEXT cell-12-14 cell-12-15 south)
    (NEXT cell-12-15 cell-12-16 south)
    (NEXT cell-13-1 cell-13-2 south)
    (NEXT cell-13-2 cell-13-3 south)
    (NEXT cell-13-3 cell-13-4 south)
    (NEXT cell-13-4 cell-13-5 south)
    (NEXT cell-13-5 cell-13-6 south)
    (NEXT cell-13-6 cell-13-7 south)
    (NEXT cell-13-7 cell-13-8 south)
    (NEXT cell-13-8 cell-13-9 south)
    (NEXT cell-13-9 cell-13-10 south)
    (NEXT cell-13-10 cell-13-11 south)
    (NEXT cell-13-11 cell-13-12 south)
    (NEXT cell-13-12 cell-13-13 south)
    (NEXT cell-13-13 cell-13-14 south)
    (NEXT cell-13-14 cell-13-15 south)
    (NEXT cell-13-15 cell-13-16 south)
    (NEXT cell-14-1 cell-14-2 south)
    (NEXT cell-14-2 cell-14-3 south)
    (NEXT cell-14-3 cell-14-4 south)
    (NEXT cell-14-4 cell-14-5 south)
    (NEXT cell-14-5 cell-14-6 south)
    (NEXT cell-14-6 cell-14-7 south)
    (NEXT cell-14-7 cell-14-8 south)
    (NEXT cell-14-8 cell-14-9 south)
    (NEXT cell-14-9 cell-14-10 south)
    (NEXT cell-14-10 cell-14-11 south)
    (NEXT cell-14-11 cell-14-12 south)
    (NEXT cell-14-12 cell-14-13 south)
    (NEXT cell-14-13 cell-14-14 south)
    (NEXT cell-14-14 cell-14-15 south)
    (NEXT cell-14-15 cell-14-16 south)
    (NEXT cell-15-1 cell-15-2 south)
    (NEXT cell-15-2 cell-15-3 south)
    (NEXT cell-15-3 cell-15-4 south)
    (NEXT cell-15-4 cell-15-5 south)
    (NEXT cell-15-5 cell-15-6 south)
    (NEXT cell-15-6 cell-15-7 south)
    (NEXT cell-15-7 cell-15-8 south)
    (NEXT cell-15-8 cell-15-9 south)
    (NEXT cell-15-9 cell-15-10 south)
    (NEXT cell-15-10 cell-15-11 south)
    (NEXT cell-15-11 cell-15-12 south)
    (NEXT cell-15-12 cell-15-13 south)
    (NEXT cell-15-13 cell-15-14 south)
    (NEXT cell-15-14 cell-15-15 south)
    (NEXT cell-15-15 cell-15-16 south)
    (NEXT cell-16-1 cell-16-2 south)
    (NEXT cell-16-2 cell-16-3 south)
    (NEXT cell-16-3 cell-16-4 south)
    (NEXT cell-16-4 cell-16-5 south)
    (NEXT cell-16-5 cell-16-6 south)
    (NEXT cell-16-6 cell-16-7 south)
    (NEXT cell-16-7 cell-16-8 south)
    (NEXT cell-16-8 cell-16-9 south)
    (NEXT cell-16-9 cell-16-10 south)
    (NEXT cell-16-10 cell-16-11 south)
    (NEXT cell-16-11 cell-16-12 south)
    (NEXT cell-16-12 cell-16-13 south)
    (NEXT cell-16-13 cell-16-14 south)
    (NEXT cell-16-14 cell-16-15 south)
    (NEXT cell-16-15 cell-16-16 south)
    (NEXT cell-1-16 cell-1-15 north)
    (NEXT cell-1-15 cell-1-14 north)
    (NEXT cell-1-14 cell-1-13 north)
    (NEXT cell-1-13 cell-1-12 north)
    (NEXT cell-1-12 cell-1-11 north)
    (NEXT cell-1-11 cell-1-10 north)
    (NEXT cell-1-10 cell-1-9 north)
    (NEXT cell-1-9 cell-1-8 north)
    (NEXT cell-1-8 cell-1-7 north)
    (NEXT cell-1-7 cell-1-6 north)
    (NEXT cell-1-6 cell-1-5 north)
    (NEXT cell-1-5 cell-1-4 north)
    (NEXT cell-1-4 cell-1-3 north)
    (NEXT cell-1-3 cell-1-2 north)
    (NEXT cell-1-2 cell-1-1 north)
    (NEXT cell-2-16 cell-2-15 north)
    (NEXT cell-2-15 cell-2-14 north)
    (NEXT cell-2-14 cell-2-13 north)
    (NEXT cell-2-13 cell-2-12 north)
    (NEXT cell-2-12 cell-2-11 north)
    (NEXT cell-2-11 cell-2-10 north)
    (NEXT cell-2-10 cell-2-9 north)
    (NEXT cell-2-9 cell-2-8 north)
    (NEXT cell-2-8 cell-2-7 north)
    (NEXT cell-2-7 cell-2-6 north)
    (NEXT cell-2-6 cell-2-5 north)
    (NEXT cell-2-5 cell-2-4 north)
    (NEXT cell-2-4 cell-2-3 north)
    (NEXT cell-2-3 cell-2-2 north)
    (NEXT cell-2-2 cell-2-1 north)
    (NEXT cell-3-16 cell-3-15 north)
    (NEXT cell-3-15 cell-3-14 north)
    (NEXT cell-3-14 cell-3-13 north)
    (NEXT cell-3-13 cell-3-12 north)
    (NEXT cell-3-12 cell-3-11 north)
    (NEXT cell-3-11 cell-3-10 north)
    (NEXT cell-3-10 cell-3-9 north)
    (NEXT cell-3-9 cell-3-8 north)
    (NEXT cell-3-8 cell-3-7 north)
    (NEXT cell-3-7 cell-3-6 north)
    (NEXT cell-3-6 cell-3-5 north)
    (NEXT cell-3-5 cell-3-4 north)
    (NEXT cell-3-4 cell-3-3 north)
    (NEXT cell-3-3 cell-3-2 north)
    (NEXT cell-3-2 cell-3-1 north)
    (NEXT cell-4-16 cell-4-15 north)
    (NEXT cell-4-15 cell-4-14 north)
    (NEXT cell-4-14 cell-4-13 north)
    (NEXT cell-4-13 cell-4-12 north)
    (NEXT cell-4-12 cell-4-11 north)
    (NEXT cell-4-11 cell-4-10 north)
    (NEXT cell-4-10 cell-4-9 north)
    (NEXT cell-4-9 cell-4-8 north)
    (NEXT cell-4-8 cell-4-7 north)
    (NEXT cell-4-7 cell-4-6 north)
    (NEXT cell-4-6 cell-4-5 north)
    (NEXT cell-4-5 cell-4-4 north)
    (NEXT cell-4-4 cell-4-3 north)
    (NEXT cell-4-3 cell-4-2 north)
    (NEXT cell-4-2 cell-4-1 north)
    (NEXT cell-5-16 cell-5-15 north)
    (NEXT cell-5-15 cell-5-14 north)
    (NEXT cell-5-14 cell-5-13 north)
    (NEXT cell-5-13 cell-5-12 north)
    (NEXT cell-5-12 cell-5-11 north)
    (NEXT cell-5-11 cell-5-10 north)
    (NEXT cell-5-10 cell-5-9 north)
    (NEXT cell-5-9 cell-5-8 north)
    (NEXT cell-5-8 cell-5-7 north)
    (NEXT cell-5-7 cell-5-6 north)
    (NEXT cell-5-6 cell-5-5 north)
    (NEXT cell-5-5 cell-5-4 north)
    (NEXT cell-5-4 cell-5-3 north)
    (NEXT cell-5-3 cell-5-2 north)
    (NEXT cell-5-2 cell-5-1 north)
    (NEXT cell-6-16 cell-6-15 north)
    (NEXT cell-6-15 cell-6-14 north)
    (NEXT cell-6-14 cell-6-13 north)
    (NEXT cell-6-13 cell-6-12 north)
    (NEXT cell-6-12 cell-6-11 north)
    (NEXT cell-6-11 cell-6-10 north)
    (NEXT cell-6-10 cell-6-9 north)
    (NEXT cell-6-9 cell-6-8 north)
    (NEXT cell-6-8 cell-6-7 north)
    (NEXT cell-6-7 cell-6-6 north)
    (NEXT cell-6-6 cell-6-5 north)
    (NEXT cell-6-5 cell-6-4 north)
    (NEXT cell-6-4 cell-6-3 north)
    (NEXT cell-6-3 cell-6-2 north)
    (NEXT cell-6-2 cell-6-1 north)
    (NEXT cell-7-16 cell-7-15 north)
    (NEXT cell-7-15 cell-7-14 north)
    (NEXT cell-7-14 cell-7-13 north)
    (NEXT cell-7-13 cell-7-12 north)
    (NEXT cell-7-12 cell-7-11 north)
    (NEXT cell-7-11 cell-7-10 north)
    (NEXT cell-7-10 cell-7-9 north)
    (NEXT cell-7-9 cell-7-8 north)
    (NEXT cell-7-8 cell-7-7 north)
    (NEXT cell-7-7 cell-7-6 north)
    (NEXT cell-7-6 cell-7-5 north)
    (NEXT cell-7-5 cell-7-4 north)
    (NEXT cell-7-4 cell-7-3 north)
    (NEXT cell-7-3 cell-7-2 north)
    (NEXT cell-7-2 cell-7-1 north)
    (NEXT cell-8-16 cell-8-15 north)
    (NEXT cell-8-15 cell-8-14 north)
    (NEXT cell-8-14 cell-8-13 north)
    (NEXT cell-8-13 cell-8-12 north)
    (NEXT cell-8-12 cell-8-11 north)
    (NEXT cell-8-11 cell-8-10 north)
    (NEXT cell-8-10 cell-8-9 north)
    (NEXT cell-8-9 cell-8-8 north)
    (NEXT cell-8-8 cell-8-7 north)
    (NEXT cell-8-7 cell-8-6 north)
    (NEXT cell-8-6 cell-8-5 north)
    (NEXT cell-8-5 cell-8-4 north)
    (NEXT cell-8-4 cell-8-3 north)
    (NEXT cell-8-3 cell-8-2 north)
    (NEXT cell-8-2 cell-8-1 north)
    (NEXT cell-9-16 cell-9-15 north)
    (NEXT cell-9-15 cell-9-14 north)
    (NEXT cell-9-14 cell-9-13 north)
    (NEXT cell-9-13 cell-9-12 north)
    (NEXT cell-9-12 cell-9-11 north)
    (NEXT cell-9-11 cell-9-10 north)
    (NEXT cell-9-10 cell-9-9 north)
    (NEXT cell-9-9 cell-9-8 north)
    (NEXT cell-9-8 cell-9-7 north)
    (NEXT cell-9-7 cell-9-6 north)
    (NEXT cell-9-6 cell-9-5 north)
    (NEXT cell-9-5 cell-9-4 north)
    (NEXT cell-9-4 cell-9-3 north)
    (NEXT cell-9-3 cell-9-2 north)
    (NEXT cell-9-2 cell-9-1 north)
    (NEXT cell-10-16 cell-10-15 north)
    (NEXT cell-10-15 cell-10-14 north)
    (NEXT cell-10-14 cell-10-13 north)
    (NEXT cell-10-13 cell-10-12 north)
    (NEXT cell-10-12 cell-10-11 north)
    (NEXT cell-10-11 cell-10-10 north)
    (NEXT cell-10-10 cell-10-9 north)
    (NEXT cell-10-9 cell-10-8 north)
    (NEXT cell-10-8 cell-10-7 north)
    (NEXT cell-10-7 cell-10-6 north)
    (NEXT cell-10-6 cell-10-5 north)
    (NEXT cell-10-5 cell-10-4 north)
    (NEXT cell-10-4 cell-10-3 north)
    (NEXT cell-10-3 cell-10-2 north)
    (NEXT cell-10-2 cell-10-1 north)
    (NEXT cell-11-16 cell-11-15 north)
    (NEXT cell-11-15 cell-11-14 north)
    (NEXT cell-11-14 cell-11-13 north)
    (NEXT cell-11-13 cell-11-12 north)
    (NEXT cell-11-12 cell-11-11 north)
    (NEXT cell-11-11 cell-11-10 north)
    (NEXT cell-11-10 cell-11-9 north)
    (NEXT cell-11-9 cell-11-8 north)
    (NEXT cell-11-8 cell-11-7 north)
    (NEXT cell-11-7 cell-11-6 north)
    (NEXT cell-11-6 cell-11-5 north)
    (NEXT cell-11-5 cell-11-4 north)
    (NEXT cell-11-4 cell-11-3 north)
    (NEXT cell-11-3 cell-11-2 north)
    (NEXT cell-11-2 cell-11-1 north)
    (NEXT cell-12-16 cell-12-15 north)
    (NEXT cell-12-15 cell-12-14 north)
    (NEXT cell-12-14 cell-12-13 north)
    (NEXT cell-12-13 cell-12-12 north)
    (NEXT cell-12-12 cell-12-11 north)
    (NEXT cell-12-11 cell-12-10 north)
    (NEXT cell-12-10 cell-12-9 north)
    (NEXT cell-12-9 cell-12-8 north)
    (NEXT cell-12-8 cell-12-7 north)
    (NEXT cell-12-7 cell-12-6 north)
    (NEXT cell-12-6 cell-12-5 north)
    (NEXT cell-12-5 cell-12-4 north)
    (NEXT cell-12-4 cell-12-3 north)
    (NEXT cell-12-3 cell-12-2 north)
    (NEXT cell-12-2 cell-12-1 north)
    (NEXT cell-13-16 cell-13-15 north)
    (NEXT cell-13-15 cell-13-14 north)
    (NEXT cell-13-14 cell-13-13 north)
    (NEXT cell-13-13 cell-13-12 north)
    (NEXT cell-13-12 cell-13-11 north)
    (NEXT cell-13-11 cell-13-10 north)
    (NEXT cell-13-10 cell-13-9 north)
    (NEXT cell-13-9 cell-13-8 north)
    (NEXT cell-13-8 cell-13-7 north)
    (NEXT cell-13-7 cell-13-6 north)
    (NEXT cell-13-6 cell-13-5 north)
    (NEXT cell-13-5 cell-13-4 north)
    (NEXT cell-13-4 cell-13-3 north)
    (NEXT cell-13-3 cell-13-2 north)
    (NEXT cell-13-2 cell-13-1 north)
    (NEXT cell-14-16 cell-14-15 north)
    (NEXT cell-14-15 cell-14-14 north)
    (NEXT cell-14-14 cell-14-13 north)
    (NEXT cell-14-13 cell-14-12 north)
    (NEXT cell-14-12 cell-14-11 north)
    (NEXT cell-14-11 cell-14-10 north)
    (NEXT cell-14-10 cell-14-9 north)
    (NEXT cell-14-9 cell-14-8 north)
    (NEXT cell-14-8 cell-14-7 north)
    (NEXT cell-14-7 cell-14-6 north)
    (NEXT cell-14-6 cell-14-5 north)
    (NEXT cell-14-5 cell-14-4 north)
    (NEXT cell-14-4 cell-14-3 north)
    (NEXT cell-14-3 cell-14-2 north)
    (NEXT cell-14-2 cell-14-1 north)
    (NEXT cell-15-16 cell-15-15 north)
    (NEXT cell-15-15 cell-15-14 north)
    (NEXT cell-15-14 cell-15-13 north)
    (NEXT cell-15-13 cell-15-12 north)
    (NEXT cell-15-12 cell-15-11 north)
    (NEXT cell-15-11 cell-15-10 north)
    (NEXT cell-15-10 cell-15-9 north)
    (NEXT cell-15-9 cell-15-8 north)
    (NEXT cell-15-8 cell-15-7 north)
    (NEXT cell-15-7 cell-15-6 north)
    (NEXT cell-15-6 cell-15-5 north)
    (NEXT cell-15-5 cell-15-4 north)
    (NEXT cell-15-4 cell-15-3 north)
    (NEXT cell-15-3 cell-15-2 north)
    (NEXT cell-15-2 cell-15-1 north)
    (NEXT cell-16-16 cell-16-15 north)
    (NEXT cell-16-15 cell-16-14 north)
    (NEXT cell-16-14 cell-16-13 north)
    (NEXT cell-16-13 cell-16-12 north)
    (NEXT cell-16-12 cell-16-11 north)
    (NEXT cell-16-11 cell-16-10 north)
    (NEXT cell-16-10 cell-16-9 north)
    (NEXT cell-16-9 cell-16-8 north)
    (NEXT cell-16-8 cell-16-7 north)
    (NEXT cell-16-7 cell-16-6 north)
    (NEXT cell-16-6 cell-16-5 north)
    (NEXT cell-16-5 cell-16-4 north)
    (NEXT cell-16-4 cell-16-3 north)
    (NEXT cell-16-3 cell-16-2 north)
    (NEXT cell-16-2 cell-16-1 north)
    (NEXT cell-1-1 cell-2-1 east)
    (NEXT cell-2-1 cell-3-1 east)
    (NEXT cell-3-1 cell-4-1 east)
    (NEXT cell-4-1 cell-5-1 east)
    (NEXT cell-5-1 cell-6-1 east)
    (NEXT cell-6-1 cell-7-1 east)
    (NEXT cell-7-1 cell-8-1 east)
    (NEXT cell-8-1 cell-9-1 east)
    (NEXT cell-9-1 cell-10-1 east)
    (NEXT cell-10-1 cell-11-1 east)
    (NEXT cell-11-1 cell-12-1 east)
    (NEXT cell-12-1 cell-13-1 east)
    (NEXT cell-13-1 cell-14-1 east)
    (NEXT cell-14-1 cell-15-1 east)
    (NEXT cell-15-1 cell-16-1 east)
    (NEXT cell-1-2 cell-2-2 east)
    (NEXT cell-2-2 cell-3-2 east)
    (NEXT cell-3-2 cell-4-2 east)
    (NEXT cell-4-2 cell-5-2 east)
    (NEXT cell-5-2 cell-6-2 east)
    (NEXT cell-6-2 cell-7-2 east)
    (NEXT cell-7-2 cell-8-2 east)
    (NEXT cell-8-2 cell-9-2 east)
    (NEXT cell-9-2 cell-10-2 east)
    (NEXT cell-10-2 cell-11-2 east)
    (NEXT cell-11-2 cell-12-2 east)
    (NEXT cell-12-2 cell-13-2 east)
    (NEXT cell-13-2 cell-14-2 east)
    (NEXT cell-14-2 cell-15-2 east)
    (NEXT cell-15-2 cell-16-2 east)
    (NEXT cell-1-3 cell-2-3 east)
    (NEXT cell-2-3 cell-3-3 east)
    (NEXT cell-3-3 cell-4-3 east)
    (NEXT cell-4-3 cell-5-3 east)
    (NEXT cell-5-3 cell-6-3 east)
    (NEXT cell-6-3 cell-7-3 east)
    (NEXT cell-7-3 cell-8-3 east)
    (NEXT cell-8-3 cell-9-3 east)
    (NEXT cell-9-3 cell-10-3 east)
    (NEXT cell-10-3 cell-11-3 east)
    (NEXT cell-11-3 cell-12-3 east)
    (NEXT cell-12-3 cell-13-3 east)
    (NEXT cell-13-3 cell-14-3 east)
    (NEXT cell-14-3 cell-15-3 east)
    (NEXT cell-15-3 cell-16-3 east)
    (NEXT cell-1-4 cell-2-4 east)
    (NEXT cell-2-4 cell-3-4 east)
    (NEXT cell-3-4 cell-4-4 east)
    (NEXT cell-4-4 cell-5-4 east)
    (NEXT cell-5-4 cell-6-4 east)
    (NEXT cell-6-4 cell-7-4 east)
    (NEXT cell-7-4 cell-8-4 east)
    (NEXT cell-8-4 cell-9-4 east)
    (NEXT cell-9-4 cell-10-4 east)
    (NEXT cell-10-4 cell-11-4 east)
    (NEXT cell-11-4 cell-12-4 east)
    (NEXT cell-12-4 cell-13-4 east)
    (NEXT cell-13-4 cell-14-4 east)
    (NEXT cell-14-4 cell-15-4 east)
    (NEXT cell-15-4 cell-16-4 east)
    (NEXT cell-1-5 cell-2-5 east)
    (NEXT cell-2-5 cell-3-5 east)
    (NEXT cell-3-5 cell-4-5 east)
    (NEXT cell-4-5 cell-5-5 east)
    (NEXT cell-5-5 cell-6-5 east)
    (NEXT cell-6-5 cell-7-5 east)
    (NEXT cell-7-5 cell-8-5 east)
    (NEXT cell-8-5 cell-9-5 east)
    (NEXT cell-9-5 cell-10-5 east)
    (NEXT cell-10-5 cell-11-5 east)
    (NEXT cell-11-5 cell-12-5 east)
    (NEXT cell-12-5 cell-13-5 east)
    (NEXT cell-13-5 cell-14-5 east)
    (NEXT cell-14-5 cell-15-5 east)
    (NEXT cell-15-5 cell-16-5 east)
    (NEXT cell-1-6 cell-2-6 east)
    (NEXT cell-2-6 cell-3-6 east)
    (NEXT cell-3-6 cell-4-6 east)
    (NEXT cell-4-6 cell-5-6 east)
    (NEXT cell-5-6 cell-6-6 east)
    (NEXT cell-6-6 cell-7-6 east)
    (NEXT cell-7-6 cell-8-6 east)
    (NEXT cell-8-6 cell-9-6 east)
    (NEXT cell-9-6 cell-10-6 east)
    (NEXT cell-10-6 cell-11-6 east)
    (NEXT cell-11-6 cell-12-6 east)
    (NEXT cell-12-6 cell-13-6 east)
    (NEXT cell-13-6 cell-14-6 east)
    (NEXT cell-14-6 cell-15-6 east)
    (NEXT cell-15-6 cell-16-6 east)
    (NEXT cell-1-7 cell-2-7 east)
    (NEXT cell-2-7 cell-3-7 east)
    (NEXT cell-3-7 cell-4-7 east)
    (NEXT cell-4-7 cell-5-7 east)
    (NEXT cell-5-7 cell-6-7 east)
    (NEXT cell-6-7 cell-7-7 east)
    (NEXT cell-7-7 cell-8-7 east)
    (NEXT cell-8-7 cell-9-7 east)
    (NEXT cell-9-7 cell-10-7 east)
    (NEXT cell-10-7 cell-11-7 east)
    (NEXT cell-11-7 cell-12-7 east)
    (NEXT cell-12-7 cell-13-7 east)
    (NEXT cell-13-7 cell-14-7 east)
    (NEXT cell-14-7 cell-15-7 east)
    (NEXT cell-15-7 cell-16-7 east)
    (NEXT cell-1-8 cell-2-8 east)
    (NEXT cell-2-8 cell-3-8 east)
    (NEXT cell-3-8 cell-4-8 east)
    (NEXT cell-4-8 cell-5-8 east)
    (NEXT cell-5-8 cell-6-8 east)
    (NEXT cell-6-8 cell-7-8 east)
    (NEXT cell-7-8 cell-8-8 east)
    (NEXT cell-8-8 cell-9-8 east)
    (NEXT cell-9-8 cell-10-8 east)
    (NEXT cell-10-8 cell-11-8 east)
    (NEXT cell-11-8 cell-12-8 east)
    (NEXT cell-12-8 cell-13-8 east)
    (NEXT cell-13-8 cell-14-8 east)
    (NEXT cell-14-8 cell-15-8 east)
    (NEXT cell-15-8 cell-16-8 east)
    (NEXT cell-1-9 cell-2-9 east)
    (NEXT cell-2-9 cell-3-9 east)
    (NEXT cell-3-9 cell-4-9 east)
    (NEXT cell-4-9 cell-5-9 east)
    (NEXT cell-5-9 cell-6-9 east)
    (NEXT cell-6-9 cell-7-9 east)
    (NEXT cell-7-9 cell-8-9 east)
    (NEXT cell-8-9 cell-9-9 east)
    (NEXT cell-9-9 cell-10-9 east)
    (NEXT cell-10-9 cell-11-9 east)
    (NEXT cell-11-9 cell-12-9 east)
    (NEXT cell-12-9 cell-13-9 east)
    (NEXT cell-13-9 cell-14-9 east)
    (NEXT cell-14-9 cell-15-9 east)
    (NEXT cell-15-9 cell-16-9 east)
    (NEXT cell-1-10 cell-2-10 east)
    (NEXT cell-2-10 cell-3-10 east)
    (NEXT cell-3-10 cell-4-10 east)
    (NEXT cell-4-10 cell-5-10 east)
    (NEXT cell-5-10 cell-6-10 east)
    (NEXT cell-6-10 cell-7-10 east)
    (NEXT cell-7-10 cell-8-10 east)
    (NEXT cell-8-10 cell-9-10 east)
    (NEXT cell-9-10 cell-10-10 east)
    (NEXT cell-10-10 cell-11-10 east)
    (NEXT cell-11-10 cell-12-10 east)
    (NEXT cell-12-10 cell-13-10 east)
    (NEXT cell-13-10 cell-14-10 east)
    (NEXT cell-14-10 cell-15-10 east)
    (NEXT cell-15-10 cell-16-10 east)
    (NEXT cell-1-11 cell-2-11 east)
    (NEXT cell-2-11 cell-3-11 east)
    (NEXT cell-3-11 cell-4-11 east)
    (NEXT cell-4-11 cell-5-11 east)
    (NEXT cell-5-11 cell-6-11 east)
    (NEXT cell-6-11 cell-7-11 east)
    (NEXT cell-7-11 cell-8-11 east)
    (NEXT cell-8-11 cell-9-11 east)
    (NEXT cell-9-11 cell-10-11 east)
    (NEXT cell-10-11 cell-11-11 east)
    (NEXT cell-11-11 cell-12-11 east)
    (NEXT cell-12-11 cell-13-11 east)
    (NEXT cell-13-11 cell-14-11 east)
    (NEXT cell-14-11 cell-15-11 east)
    (NEXT cell-15-11 cell-16-11 east)
    (NEXT cell-1-12 cell-2-12 east)
    (NEXT cell-2-12 cell-3-12 east)
    (NEXT cell-3-12 cell-4-12 east)
    (NEXT cell-4-12 cell-5-12 east)
    (NEXT cell-5-12 cell-6-12 east)
    (NEXT cell-6-12 cell-7-12 east)
    (NEXT cell-7-12 cell-8-12 east)
    (NEXT cell-8-12 cell-9-12 east)
    (NEXT cell-9-12 cell-10-12 east)
    (NEXT cell-10-12 cell-11-12 east)
    (NEXT cell-11-12 cell-12-12 east)
    (NEXT cell-12-12 cell-13-12 east)
    (NEXT cell-13-12 cell-14-12 east)
    (NEXT cell-14-12 cell-15-12 east)
    (NEXT cell-15-12 cell-16-12 east)
    (NEXT cell-1-13 cell-2-13 east)
    (NEXT cell-2-13 cell-3-13 east)
    (NEXT cell-3-13 cell-4-13 east)
    (NEXT cell-4-13 cell-5-13 east)
    (NEXT cell-5-13 cell-6-13 east)
    (NEXT cell-6-13 cell-7-13 east)
    (NEXT cell-7-13 cell-8-13 east)
    (NEXT cell-8-13 cell-9-13 east)
    (NEXT cell-9-13 cell-10-13 east)
    (NEXT cell-10-13 cell-11-13 east)
    (NEXT cell-11-13 cell-12-13 east)
    (NEXT cell-12-13 cell-13-13 east)
    (NEXT cell-13-13 cell-14-13 east)
    (NEXT cell-14-13 cell-15-13 east)
    (NEXT cell-15-13 cell-16-13 east)
    (NEXT cell-1-14 cell-2-14 east)
    (NEXT cell-2-14 cell-3-14 east)
    (NEXT cell-3-14 cell-4-14 east)
    (NEXT cell-4-14 cell-5-14 east)
    (NEXT cell-5-14 cell-6-14 east)
    (NEXT cell-6-14 cell-7-14 east)
    (NEXT cell-7-14 cell-8-14 east)
    (NEXT cell-8-14 cell-9-14 east)
    (NEXT cell-9-14 cell-10-14 east)
    (NEXT cell-10-14 cell-11-14 east)
    (NEXT cell-11-14 cell-12-14 east)
    (NEXT cell-12-14 cell-13-14 east)
    (NEXT cell-13-14 cell-14-14 east)
    (NEXT cell-14-14 cell-15-14 east)
    (NEXT cell-15-14 cell-16-14 east)
    (NEXT cell-1-15 cell-2-15 east)
    (NEXT cell-2-15 cell-3-15 east)
    (NEXT cell-3-15 cell-4-15 east)
    (NEXT cell-4-15 cell-5-15 east)
    (NEXT cell-5-15 cell-6-15 east)
    (NEXT cell-6-15 cell-7-15 east)
    (NEXT cell-7-15 cell-8-15 east)
    (NEXT cell-8-15 cell-9-15 east)
    (NEXT cell-9-15 cell-10-15 east)
    (NEXT cell-10-15 cell-11-15 east)
    (NEXT cell-11-15 cell-12-15 east)
    (NEXT cell-12-15 cell-13-15 east)
    (NEXT cell-13-15 cell-14-15 east)
    (NEXT cell-14-15 cell-15-15 east)
    (NEXT cell-15-15 cell-16-15 east)
    (NEXT cell-1-16 cell-2-16 east)
    (NEXT cell-2-16 cell-3-16 east)
    (NEXT cell-3-16 cell-4-16 east)
    (NEXT cell-4-16 cell-5-16 east)
    (NEXT cell-5-16 cell-6-16 east)
    (NEXT cell-6-16 cell-7-16 east)
    (NEXT cell-7-16 cell-8-16 east)
    (NEXT cell-8-16 cell-9-16 east)
    (NEXT cell-9-16 cell-10-16 east)
    (NEXT cell-10-16 cell-11-16 east)
    (NEXT cell-11-16 cell-12-16 east)
    (NEXT cell-12-16 cell-13-16 east)
    (NEXT cell-13-16 cell-14-16 east)
    (NEXT cell-14-16 cell-15-16 east)
    (NEXT cell-15-16 cell-16-16 east)
    (NEXT cell-16-1 cell-15-1 west)
    (NEXT cell-15-1 cell-14-1 west)
    (NEXT cell-14-1 cell-13-1 west)
    (NEXT cell-13-1 cell-12-1 west)
    (NEXT cell-12-1 cell-11-1 west)
    (NEXT cell-11-1 cell-10-1 west)
    (NEXT cell-10-1 cell-9-1 west)
    (NEXT cell-9-1 cell-8-1 west)
    (NEXT cell-8-1 cell-7-1 west)
    (NEXT cell-7-1 cell-6-1 west)
    (NEXT cell-6-1 cell-5-1 west)
    (NEXT cell-5-1 cell-4-1 west)
    (NEXT cell-4-1 cell-3-1 west)
    (NEXT cell-3-1 cell-2-1 west)
    (NEXT cell-2-1 cell-1-1 west)
    (NEXT cell-16-2 cell-15-2 west)
    (NEXT cell-15-2 cell-14-2 west)
    (NEXT cell-14-2 cell-13-2 west)
    (NEXT cell-13-2 cell-12-2 west)
    (NEXT cell-12-2 cell-11-2 west)
    (NEXT cell-11-2 cell-10-2 west)
    (NEXT cell-10-2 cell-9-2 west)
    (NEXT cell-9-2 cell-8-2 west)
    (NEXT cell-8-2 cell-7-2 west)
    (NEXT cell-7-2 cell-6-2 west)
    (NEXT cell-6-2 cell-5-2 west)
    (NEXT cell-5-2 cell-4-2 west)
    (NEXT cell-4-2 cell-3-2 west)
    (NEXT cell-3-2 cell-2-2 west)
    (NEXT cell-2-2 cell-1-2 west)
    (NEXT cell-16-3 cell-15-3 west)
    (NEXT cell-15-3 cell-14-3 west)
    (NEXT cell-14-3 cell-13-3 west)
    (NEXT cell-13-3 cell-12-3 west)
    (NEXT cell-12-3 cell-11-3 west)
    (NEXT cell-11-3 cell-10-3 west)
    (NEXT cell-10-3 cell-9-3 west)
    (NEXT cell-9-3 cell-8-3 west)
    (NEXT cell-8-3 cell-7-3 west)
    (NEXT cell-7-3 cell-6-3 west)
    (NEXT cell-6-3 cell-5-3 west)
    (NEXT cell-5-3 cell-4-3 west)
    (NEXT cell-4-3 cell-3-3 west)
    (NEXT cell-3-3 cell-2-3 west)
    (NEXT cell-2-3 cell-1-3 west)
    (NEXT cell-16-4 cell-15-4 west)
    (NEXT cell-15-4 cell-14-4 west)
    (NEXT cell-14-4 cell-13-4 west)
    (NEXT cell-13-4 cell-12-4 west)
    (NEXT cell-12-4 cell-11-4 west)
    (NEXT cell-11-4 cell-10-4 west)
    (NEXT cell-10-4 cell-9-4 west)
    (NEXT cell-9-4 cell-8-4 west)
    (NEXT cell-8-4 cell-7-4 west)
    (NEXT cell-7-4 cell-6-4 west)
    (NEXT cell-6-4 cell-5-4 west)
    (NEXT cell-5-4 cell-4-4 west)
    (NEXT cell-4-4 cell-3-4 west)
    (NEXT cell-3-4 cell-2-4 west)
    (NEXT cell-2-4 cell-1-4 west)
    (NEXT cell-16-5 cell-15-5 west)
    (NEXT cell-15-5 cell-14-5 west)
    (NEXT cell-14-5 cell-13-5 west)
    (NEXT cell-13-5 cell-12-5 west)
    (NEXT cell-12-5 cell-11-5 west)
    (NEXT cell-11-5 cell-10-5 west)
    (NEXT cell-10-5 cell-9-5 west)
    (NEXT cell-9-5 cell-8-5 west)
    (NEXT cell-8-5 cell-7-5 west)
    (NEXT cell-7-5 cell-6-5 west)
    (NEXT cell-6-5 cell-5-5 west)
    (NEXT cell-5-5 cell-4-5 west)
    (NEXT cell-4-5 cell-3-5 west)
    (NEXT cell-3-5 cell-2-5 west)
    (NEXT cell-2-5 cell-1-5 west)
    (NEXT cell-16-6 cell-15-6 west)
    (NEXT cell-15-6 cell-14-6 west)
    (NEXT cell-14-6 cell-13-6 west)
    (NEXT cell-13-6 cell-12-6 west)
    (NEXT cell-12-6 cell-11-6 west)
    (NEXT cell-11-6 cell-10-6 west)
    (NEXT cell-10-6 cell-9-6 west)
    (NEXT cell-9-6 cell-8-6 west)
    (NEXT cell-8-6 cell-7-6 west)
    (NEXT cell-7-6 cell-6-6 west)
    (NEXT cell-6-6 cell-5-6 west)
    (NEXT cell-5-6 cell-4-6 west)
    (NEXT cell-4-6 cell-3-6 west)
    (NEXT cell-3-6 cell-2-6 west)
    (NEXT cell-2-6 cell-1-6 west)
    (NEXT cell-16-7 cell-15-7 west)
    (NEXT cell-15-7 cell-14-7 west)
    (NEXT cell-14-7 cell-13-7 west)
    (NEXT cell-13-7 cell-12-7 west)
    (NEXT cell-12-7 cell-11-7 west)
    (NEXT cell-11-7 cell-10-7 west)
    (NEXT cell-10-7 cell-9-7 west)
    (NEXT cell-9-7 cell-8-7 west)
    (NEXT cell-8-7 cell-7-7 west)
    (NEXT cell-7-7 cell-6-7 west)
    (NEXT cell-6-7 cell-5-7 west)
    (NEXT cell-5-7 cell-4-7 west)
    (NEXT cell-4-7 cell-3-7 west)
    (NEXT cell-3-7 cell-2-7 west)
    (NEXT cell-2-7 cell-1-7 west)
    (NEXT cell-16-8 cell-15-8 west)
    (NEXT cell-15-8 cell-14-8 west)
    (NEXT cell-14-8 cell-13-8 west)
    (NEXT cell-13-8 cell-12-8 west)
    (NEXT cell-12-8 cell-11-8 west)
    (NEXT cell-11-8 cell-10-8 west)
    (NEXT cell-10-8 cell-9-8 west)
    (NEXT cell-9-8 cell-8-8 west)
    (NEXT cell-8-8 cell-7-8 west)
    (NEXT cell-7-8 cell-6-8 west)
    (NEXT cell-6-8 cell-5-8 west)
    (NEXT cell-5-8 cell-4-8 west)
    (NEXT cell-4-8 cell-3-8 west)
    (NEXT cell-3-8 cell-2-8 west)
    (NEXT cell-2-8 cell-1-8 west)
    (NEXT cell-16-9 cell-15-9 west)
    (NEXT cell-15-9 cell-14-9 west)
    (NEXT cell-14-9 cell-13-9 west)
    (NEXT cell-13-9 cell-12-9 west)
    (NEXT cell-12-9 cell-11-9 west)
    (NEXT cell-11-9 cell-10-9 west)
    (NEXT cell-10-9 cell-9-9 west)
    (NEXT cell-9-9 cell-8-9 west)
    (NEXT cell-8-9 cell-7-9 west)
    (NEXT cell-7-9 cell-6-9 west)
    (NEXT cell-6-9 cell-5-9 west)
    (NEXT cell-5-9 cell-4-9 west)
    (NEXT cell-4-9 cell-3-9 west)
    (NEXT cell-3-9 cell-2-9 west)
    (NEXT cell-2-9 cell-1-9 west)
    (NEXT cell-16-10 cell-15-10 west)
    (NEXT cell-15-10 cell-14-10 west)
    (NEXT cell-14-10 cell-13-10 west)
    (NEXT cell-13-10 cell-12-10 west)
    (NEXT cell-12-10 cell-11-10 west)
    (NEXT cell-11-10 cell-10-10 west)
    (NEXT cell-10-10 cell-9-10 west)
    (NEXT cell-9-10 cell-8-10 west)
    (NEXT cell-8-10 cell-7-10 west)
    (NEXT cell-7-10 cell-6-10 west)
    (NEXT cell-6-10 cell-5-10 west)
    (NEXT cell-5-10 cell-4-10 west)
    (NEXT cell-4-10 cell-3-10 west)
    (NEXT cell-3-10 cell-2-10 west)
    (NEXT cell-2-10 cell-1-10 west)
    (NEXT cell-16-11 cell-15-11 west)
    (NEXT cell-15-11 cell-14-11 west)
    (NEXT cell-14-11 cell-13-11 west)
    (NEXT cell-13-11 cell-12-11 west)
    (NEXT cell-12-11 cell-11-11 west)
    (NEXT cell-11-11 cell-10-11 west)
    (NEXT cell-10-11 cell-9-11 west)
    (NEXT cell-9-11 cell-8-11 west)
    (NEXT cell-8-11 cell-7-11 west)
    (NEXT cell-7-11 cell-6-11 west)
    (NEXT cell-6-11 cell-5-11 west)
    (NEXT cell-5-11 cell-4-11 west)
    (NEXT cell-4-11 cell-3-11 west)
    (NEXT cell-3-11 cell-2-11 west)
    (NEXT cell-2-11 cell-1-11 west)
    (NEXT cell-16-12 cell-15-12 west)
    (NEXT cell-15-12 cell-14-12 west)
    (NEXT cell-14-12 cell-13-12 west)
    (NEXT cell-13-12 cell-12-12 west)
    (NEXT cell-12-12 cell-11-12 west)
    (NEXT cell-11-12 cell-10-12 west)
    (NEXT cell-10-12 cell-9-12 west)
    (NEXT cell-9-12 cell-8-12 west)
    (NEXT cell-8-12 cell-7-12 west)
    (NEXT cell-7-12 cell-6-12 west)
    (NEXT cell-6-12 cell-5-12 west)
    (NEXT cell-5-12 cell-4-12 west)
    (NEXT cell-4-12 cell-3-12 west)
    (NEXT cell-3-12 cell-2-12 west)
    (NEXT cell-2-12 cell-1-12 west)
    (NEXT cell-16-13 cell-15-13 west)
    (NEXT cell-15-13 cell-14-13 west)
    (NEXT cell-14-13 cell-13-13 west)
    (NEXT cell-13-13 cell-12-13 west)
    (NEXT cell-12-13 cell-11-13 west)
    (NEXT cell-11-13 cell-10-13 west)
    (NEXT cell-10-13 cell-9-13 west)
    (NEXT cell-9-13 cell-8-13 west)
    (NEXT cell-8-13 cell-7-13 west)
    (NEXT cell-7-13 cell-6-13 west)
    (NEXT cell-6-13 cell-5-13 west)
    (NEXT cell-5-13 cell-4-13 west)
    (NEXT cell-4-13 cell-3-13 west)
    (NEXT cell-3-13 cell-2-13 west)
    (NEXT cell-2-13 cell-1-13 west)
    (NEXT cell-16-14 cell-15-14 west)
    (NEXT cell-15-14 cell-14-14 west)
    (NEXT cell-14-14 cell-13-14 west)
    (NEXT cell-13-14 cell-12-14 west)
    (NEXT cell-12-14 cell-11-14 west)
    (NEXT cell-11-14 cell-10-14 west)
    (NEXT cell-10-14 cell-9-14 west)
    (NEXT cell-9-14 cell-8-14 west)
    (NEXT cell-8-14 cell-7-14 west)
    (NEXT cell-7-14 cell-6-14 west)
    (NEXT cell-6-14 cell-5-14 west)
    (NEXT cell-5-14 cell-4-14 west)
    (NEXT cell-4-14 cell-3-14 west)
    (NEXT cell-3-14 cell-2-14 west)
    (NEXT cell-2-14 cell-1-14 west)
    (NEXT cell-16-15 cell-15-15 west)
    (NEXT cell-15-15 cell-14-15 west)
    (NEXT cell-14-15 cell-13-15 west)
    (NEXT cell-13-15 cell-12-15 west)
    (NEXT cell-12-15 cell-11-15 west)
    (NEXT cell-11-15 cell-10-15 west)
    (NEXT cell-10-15 cell-9-15 west)
    (NEXT cell-9-15 cell-8-15 west)
    (NEXT cell-8-15 cell-7-15 west)
    (NEXT cell-7-15 cell-6-15 west)
    (NEXT cell-6-15 cell-5-15 west)
    (NEXT cell-5-15 cell-4-15 west)
    (NEXT cell-4-15 cell-3-15 west)
    (NEXT cell-3-15 cell-2-15 west)
    (NEXT cell-2-15 cell-1-15 west)
    (NEXT cell-16-16 cell-15-16 west)
    (NEXT cell-15-16 cell-14-16 west)
    (NEXT cell-14-16 cell-13-16 west)
    (NEXT cell-13-16 cell-12-16 west)
    (NEXT cell-12-16 cell-11-16 west)
    (NEXT cell-11-16 cell-10-16 west)
    (NEXT cell-10-16 cell-9-16 west)
    (NEXT cell-9-16 cell-8-16 west)
    (NEXT cell-8-16 cell-7-16 west)
    (NEXT cell-7-16 cell-6-16 west)
    (NEXT cell-6-16 cell-5-16 west)
    (NEXT cell-5-16 cell-4-16 west)
    (NEXT cell-4-16 cell-3-16 west)
    (NEXT cell-3-16 cell-2-16 west)
    (NEXT cell-2-16 cell-1-16 west)

    (BLOCKED cell-1-1 north)
    (BLOCKED cell-1-16 south)
    (BLOCKED cell-2-1 north)
    (BLOCKED cell-2-16 south)
    (BLOCKED cell-3-1 north)
    (BLOCKED cell-3-16 south)
    (BLOCKED cell-4-1 north)
    (BLOCKED cell-4-16 south)
    (BLOCKED cell-5-1 north)
    (BLOCKED cell-5-16 south)
    (BLOCKED cell-6-1 north)
    (BLOCKED cell-6-16 south)
    (BLOCKED cell-7-1 north)
    (BLOCKED cell-7-16 south)
    (BLOCKED cell-8-1 north)
    (BLOCKED cell-8-16 south)
    (BLOCKED cell-9-1 north)
    (BLOCKED cell-9-16 south)
    (BLOCKED cell-10-1 north)
    (BLOCKED cell-10-16 south)
    (BLOCKED cell-11-1 north)
    (BLOCKED cell-11-16 south)
    (BLOCKED cell-12-1 north)
    (BLOCKED cell-12-16 south)
    (BLOCKED cell-13-1 north)
    (BLOCKED cell-13-16 south)
    (BLOCKED cell-14-1 north)
    (BLOCKED cell-14-16 south)
    (BLOCKED cell-15-1 north)
    (BLOCKED cell-15-16 south)
    (BLOCKED cell-16-1 north)
    (BLOCKED cell-16-16 south)
    (BLOCKED cell-1-1 west)
    (BLOCKED cell-16-1 east)
    (BLOCKED cell-1-2 west)
    (BLOCKED cell-16-2 east)
    (BLOCKED cell-1-3 west)
    (BLOCKED cell-16-3 east)
    (BLOCKED cell-1-4 west)
    (BLOCKED cell-16-4 east)
    (BLOCKED cell-1-5 west)
    (BLOCKED cell-16-5 east)
    (BLOCKED cell-1-6 west)
    (BLOCKED cell-16-6 east)
    (BLOCKED cell-1-7 west)
    (BLOCKED cell-16-7 east)
    (BLOCKED cell-1-8 west)
    (BLOCKED cell-16-8 east)
    (BLOCKED cell-1-9 west)
    (BLOCKED cell-16-9 east)
    (BLOCKED cell-1-10 west)
    (BLOCKED cell-16-10 east)
    (BLOCKED cell-1-11 west)
    (BLOCKED cell-16-11 east)
    (BLOCKED cell-1-12 west)
    (BLOCKED cell-16-12 east)
    (BLOCKED cell-1-13 west)
    (BLOCKED cell-16-13 east)
    (BLOCKED cell-1-14 west)
    (BLOCKED cell-16-14 east)
    (BLOCKED cell-1-15 west)
    (BLOCKED cell-16-15 east)
    (BLOCKED cell-1-16 west)
    (BLOCKED cell-16-16 east)
    (BLOCKED cell-1-12 south)
    (BLOCKED cell-1-13 north)
    (BLOCKED cell-1-6 south)
    (BLOCKED cell-1-7 north)
    (BLOCKED cell-10-1 east)
    (BLOCKED cell-11-1 west)
    (BLOCKED cell-10-14 south)
    (BLOCKED cell-10-15 north)
    (BLOCKED cell-10-15 east)
    (BLOCKED cell-11-15 west)
    (BLOCKED cell-10-8 west)
    (BLOCKED cell-9-8 east)
    (BLOCKED cell-10-9 west)
    (BLOCKED cell-9-9 east)
    (BLOCKED cell-11-12 east)
    (BLOCKED cell-12-12 west)
    (BLOCKED cell-11-12 south)
    (BLOCKED cell-11-13 north)
    (BLOCKED cell-11-3 east)
    (BLOCKED cell-12-3 west)
    (BLOCKED cell-11-7 south)
    (BLOCKED cell-11-8 north)
    (BLOCKED cell-11-8 east)
    (BLOCKED cell-12-8 west)
    (BLOCKED cell-12-16 east)
    (BLOCKED cell-13-16 west)
    (BLOCKED cell-12-3 south)
    (BLOCKED cell-12-4 north)
    (BLOCKED cell-13-11 east)
    (BLOCKED cell-14-11 west)
    (BLOCKED cell-14-10 south)
    (BLOCKED cell-14-11 north)
    (BLOCKED cell-14-13 east)
    (BLOCKED cell-15-13 west)
    (BLOCKED cell-14-2 east)
    (BLOCKED cell-15-2 west)
    (BLOCKED cell-14-7 east)
    (BLOCKED cell-15-7 west)
    (BLOCKED cell-14-7 south)
    (BLOCKED cell-14-8 north)
    (BLOCKED cell-15-1 south)
    (BLOCKED cell-15-2 north)
    (BLOCKED cell-15-13 south)
    (BLOCKED cell-15-14 north)
    (BLOCKED cell-16-4 south)
    (BLOCKED cell-16-5 north)
    (BLOCKED cell-16-9 south)
    (BLOCKED cell-16-10 north)
    (BLOCKED cell-2-1 east)
    (BLOCKED cell-3-1 west)
    (BLOCKED cell-2-10 south)
    (BLOCKED cell-2-11 north)
    (BLOCKED cell-2-11 east)
    (BLOCKED cell-3-11 west)
    (BLOCKED cell-2-2 south)
    (BLOCKED cell-2-3 north)
    (BLOCKED cell-2-3 east)
    (BLOCKED cell-3-3 west)
    (BLOCKED cell-3-15 east)
    (BLOCKED cell-4-15 west)
    (BLOCKED cell-3-15 south)
    (BLOCKED cell-3-16 north)
    (BLOCKED cell-3-7 east)
    (BLOCKED cell-4-7 west)
    (BLOCKED cell-4-10 east)
    (BLOCKED cell-5-10 west)
    (BLOCKED cell-4-16 east)
    (BLOCKED cell-5-16 west)
    (BLOCKED cell-4-2 east)
    (BLOCKED cell-5-2 west)
    (BLOCKED cell-4-7 south)
    (BLOCKED cell-4-8 north)
    (BLOCKED cell-5-1 south)
    (BLOCKED cell-5-2 north)
    (BLOCKED cell-5-10 south)
    (BLOCKED cell-5-11 north)
    (BLOCKED cell-6-14 east)
    (BLOCKED cell-7-14 west)
    (BLOCKED cell-7-13 south)
    (BLOCKED cell-7-14 north)
    (BLOCKED cell-7-4 east)
    (BLOCKED cell-8-4 west)
    (BLOCKED cell-7-4 south)
    (BLOCKED cell-7-5 north)
    (BLOCKED cell-7-8 east)
    (BLOCKED cell-8-8 west)
    (BLOCKED cell-7-9 east)
    (BLOCKED cell-8-9 west)
    (BLOCKED cell-8-10 north)
    (BLOCKED cell-8-9 south)
    (BLOCKED cell-8-11 east)
    (BLOCKED cell-9-11 west)
    (BLOCKED cell-8-7 south)
    (BLOCKED cell-8-8 north)
    (BLOCKED cell-9-10 north)
    (BLOCKED cell-9-9 south)
    (BLOCKED cell-9-10 south)
    (BLOCKED cell-9-11 north)
    (BLOCKED cell-9-7 south)
    (BLOCKED cell-9-8 north)

    (free cell-1-2)
    (free cell-1-3)
    (free cell-1-4)
    (free cell-1-5)
    (free cell-1-6)
    (free cell-1-7)
    (free cell-1-8)
    (free cell-1-9)
    (free cell-1-10)
    (free cell-1-11)
    (free cell-1-12)
    (free cell-1-13)
    (free cell-1-14)
    (free cell-1-15)
    (free cell-2-1)
    (free cell-2-2)
    (free cell-2-3)
    (free cell-2-4)
    (free cell-2-5)
    (free cell-2-6)
    (free cell-2-7)
    (free cell-2-8)
    (free cell-2-9)
    (free cell-2-10)
    (free cell-2-11)
    (free cell-2-12)
    (free cell-2-13)
    (free cell-2-14)
    (free cell-2-15)
    (free cell-2-16)
    (free cell-3-1)
    (free cell-3-2)
    (free cell-3-3)
    (free cell-3-4)
    (free cell-3-5)
    (free cell-3-6)
    (free cell-3-7)
    (free cell-3-8)
    (free cell-3-9)
    (free cell-3-10)
    (free cell-3-11)
    (free cell-3-12)
    (free cell-3-13)
    (free cell-3-14)
    (free cell-3-15)
    (free cell-3-16)
    (free cell-4-1)
    (free cell-4-2)
    (free cell-4-3)
    (free cell-4-4)
    (free cell-4-5)
    (free cell-4-6)
    (free cell-4-7)
    (free cell-4-8)
    (free cell-4-9)
    (free cell-4-10)
    (free cell-4-11)
    (free cell-4-12)
    (free cell-4-13)
    (free cell-4-14)
    (free cell-4-15)
    (free cell-4-16)
    (free cell-5-1)
    (free cell-5-2)
    (free cell-5-3)
    (free cell-5-4)
    (free cell-5-5)
    (free cell-5-6)
    (free cell-5-7)
    (free cell-5-8)
    (free cell-5-9)
    (free cell-5-10)
    (free cell-5-11)
    (free cell-5-12)
    (free cell-5-13)
    (free cell-5-14)
    (free cell-5-15)
    (free cell-5-16)
    (free cell-6-1)
    (free cell-6-2)
    (free cell-6-3)
    (free cell-6-4)
    (free cell-6-5)
    (free cell-6-6)
    (free cell-6-7)
    (free cell-6-8)
    (free cell-6-9)
    (free cell-6-10)
    (free cell-6-11)
    (free cell-6-12)
    (free cell-6-13)
    (free cell-6-14)
    (free cell-6-15)
    (free cell-6-16)
    (free cell-7-1)
    (free cell-7-2)
    (free cell-7-3)
    (free cell-7-4)
    (free cell-7-5)
    (free cell-7-6)
    (free cell-7-7)
    (free cell-7-8)
    (free cell-7-9)
    (free cell-7-10)
    (free cell-7-11)
    (free cell-7-12)
    (free cell-7-13)
    (free cell-7-14)
    (free cell-7-15)
    (free cell-7-16)
    (free cell-8-1)
    (free cell-8-2)
    (free cell-8-3)
    (free cell-8-4)
    (free cell-8-5)
    (free cell-8-6)
    (free cell-8-7)
    (free cell-8-8)
    (free cell-8-9)
    (free cell-8-10)
    (free cell-8-11)
    (free cell-8-12)
    (free cell-8-13)
    (free cell-8-14)
    (free cell-8-15)
    (free cell-8-16)
    (free cell-9-1)
    (free cell-9-2)
    (free cell-9-3)
    (free cell-9-4)
    (free cell-9-5)
    (free cell-9-6)
    (free cell-9-7)
    (free cell-9-8)
    (free cell-9-9)
    (free cell-9-10)
    (free cell-9-11)
    (free cell-9-12)
    (free cell-9-13)
    (free cell-9-14)
    (free cell-9-15)
    (free cell-9-16)
    (free cell-10-1)
    (free cell-10-2)
    (free cell-10-3)
    (free cell-10-4)
    (free cell-10-5)
    (free cell-10-6)
    (free cell-10-7)
    (free cell-10-8)
    (free cell-10-9)
    (free cell-10-10)
    (free cell-10-11)
    (free cell-10-12)
    (free cell-10-13)
    (free cell-10-14)
    (free cell-10-15)
    (free cell-10-16)
    (free cell-11-1)
    (free cell-11-2)
    (free cell-11-3)
    (free cell-11-4)
    (free cell-11-5)
    (free cell-11-6)
    (free cell-11-7)
    (free cell-11-8)
    (free cell-11-9)
    (free cell-11-10)
    (free cell-11-11)
    (free cell-11-12)
    (free cell-11-13)
    (free cell-11-14)
    (free cell-11-15)
    (free cell-11-16)
    (free cell-12-1)
    (free cell-12-2)
    (free cell-12-3)
    (free cell-12-4)
    (free cell-12-5)
    (free cell-12-6)
    (free cell-12-7)
    (free cell-12-8)
    (free cell-12-9)
    (free cell-12-10)
    (free cell-12-11)
    (free cell-12-12)
    (free cell-12-13)
    (free cell-12-14)
    (free cell-12-15)
    (free cell-12-16)
    (free cell-13-1)
    (free cell-13-2)
    (free cell-13-3)
    (free cell-13-4)
    (free cell-13-5)
    (free cell-13-6)
    (free cell-13-7)
    (free cell-13-8)
    (free cell-13-9)
    (free cell-13-10)
    (free cell-13-11)
    (free cell-13-12)
    (free cell-13-13)
    (free cell-13-14)
    (free cell-13-15)
    (free cell-13-16)
    (free cell-14-1)
    (free cell-14-2)
    (free cell-14-3)
    (free cell-14-4)
    (free cell-14-5)
    (free cell-14-6)
    (free cell-14-7)
    (free cell-14-8)
    (free cell-14-9)
    (free cell-14-10)
    (free cell-14-11)
    (free cell-14-12)
    (free cell-14-13)
    (free cell-14-14)
    (free cell-14-15)
    (free cell-14-16)
    (free cell-15-1)
    (free cell-15-2)
    (free cell-15-3)
    (free cell-15-4)
    (free cell-15-5)
    (free cell-15-6)
    (free cell-15-7)
    (free cell-15-8)
    (free cell-15-9)
    (free cell-15-10)
    (free cell-15-11)
    (free cell-15-12)
    (free cell-15-13)
    (free cell-15-14)
    (free cell-15-15)
    (free cell-15-16)
    (free cell-16-2)
    (free cell-16-3)
    (free cell-16-4)
    (free cell-16-5)
    (free cell-16-6)
    (free cell-16-7)
    (free cell-16-8)
    (free cell-16-9)
    (free cell-16-10)
    (free cell-16-11)
    (free cell-16-12)
    (free cell-16-13)
    (free cell-16-14)
    (free cell-16-15)

    (at robot-1 cell-1-1) ;; red
    (at robot-2 cell-1-16) ;; blue
    (at robot-3 cell-16-1) ;; green
    (at robot-4 cell-16-16) ;; yellow

    (nothing-is-moving)

    (= (total-cost) 0)
    (= (go-cost) 1)
    (= (step-cost) 0)
    (= (stop-cost) 0)
)
(:goal
    (and
        (at robot-1 cell-9-6)
        (nothing-is-moving)
    )
)
(:metric minimize (total-cost))
)

Saída para o exemplo acima

Accepted

Exemplo de entrada

domain.pddl

(define (domain simple_types)
  (:requirements :strips :typing)
  
  (:types 
    robot location
  )

  (:predicates 
    (at ?r - robot ?l - location)
    (connected ?from - location ?to - location)
  )

  (:action move
    :parameters (?r - robot ?from - location ?to - location)
    :precondition (and (at ?r ?from) (connected ?from ?to))
    :effect (and (not (at ?r ?from)) (at ?r ?to))
  )
)

problem.pddl

(define (problem simple_problem)
  (:domain simple_types)
  
  (:objects 
    robot1 - robot
    loc1 loc2 - location
  )

  (:init
    (at robot1 loc1)
    (connected loc1 loc2)
  )

  (:goal
    (at robot1 loc2)
  )
)

Saída para o exemplo acima

Accepted

Exemplo de entrada

domain.pddl

(define (domain simple_types)
  (:requirements :strips :typing)
  
  (:types 
    robot location
  )

  (:predicates 
    (at ?r - robot ?l location)
    (connected ?from - location ?to - location)
  )

  (:action move
    :parameters (?r - robot ?from - location ?to - location)
    :precondition (and (at ?r ?from) (connected ?from ?to))
    :effect (and (not (at ?r ?from)) (at ?r ?to))
  )
)

problem.pddl

(define (problem simple_problem)
  (:domain simple_types)
  
  (:objects 
    robot1 - robot
    loc1 loc2 - location
  )

  (:init
    (at robot1 loc1)
    (connected loc1 loc2)
  )

  (:goal
    (at robot1 loc2)
  )
)

Saída para o exemplo acima

Rejected: /tmp/in/domain.pddl at line 9

Exemplo de entrada

domain.pddl

(define (domain lights)
  (:requirements :totola)
  (:predicates (light-on) )

  (:action turn-on
    :parameters ()
    :precondition (not (light-on))
    :effect (light-on)
  )

  (:action turn-off
    :parameters ()
    :precondition (light-on)
    :effect (not (light-on))
  )
)

problem.pddl

(define (problem test-lights)
  (:domain lights)
  (:init (not (light-on)))
  (:goal (light-on))
)

Saída para o exemplo acima

Rejected: /tmp/in/domain.pddl at line 2

Exemplo de entrada

domain.pddl

(define (domain lights)
  (:requirements :strips :typing :negative-preconditions :equality :existential-preconditions :universal-preconditions :quantified-preconditions :conditional-effects :fluents :numeric-fluents :adl :durative-actions :duration-inequalities :continuous-effects :derived-predicates :timed-inital-literals :preferences :constraints :action-costs)
  (:predicates (light-on) )

  (:action turn-on
    :parameters ()
    :precondition (not (light-on))
    :effect (light-on)
  )

  (:action turn-off
    :parameters ()
    :precondition (light-on)
    :effect (not (light-on))
  )
)

problem.pddl

(define (problem test-lights)
  (:domain lights)
  (:init (not (light-on)))
  (:goal (light-on))
)

Saída para o exemplo acima

Accepted

Exemplo de entrada

domain.pddl

;; Created by Drew McDermott for the IPC-1

;; This is the mystery domain with one extra action:
;;     the ability to squirt a unit of fuel from any node to a neighboring node
;;     provided the originating node has at least two units. 
(define (domain mystery-prime-typed)
;   (:requirements :typing :fluents)
   (:types food emotion - object
           pleasure pain - emotion)
   (:predicates
       (eats ?n1 ?n2 - food)
       (craves ?v - emotion ?n - food)
       (fears ?c - pain ?v - pleasure)
;       (locale ?n - food ?a - province)
;      (harmony ?v - emotion ?s - planet)
;       (attacks ?i ?j - province)
;       (orbits ?i ?j - planet)
   )

   (:functions
       (harmony ?v - emotion)
       (locale ?n - food)
   )

   (:action overcome
       :parameters (?c - pain ?v - pleasure ?n - food)
       :precondition (and (craves ?c ?n)
                          (craves ?v ?n)
                          (>= (harmony ?v) 1)
                     )
       :effect (and (not (craves ?c ?n))
                    (fears ?c ?v)
                    (decrease (harmony ?v) 1)
               )
   )

   (:action feast
       :parameters (?v - pleasure ?n1 ?n2 - food)
       :precondition (and (craves ?v ?n1)
                          (eats ?n1 ?n2)
                          (>= (locale ?n1) 1)
                     )
       :effect (and (not (craves ?v ?n1))
                    (craves ?v ?n2)
                    (decrease (locale ?n1) 1)
                    )
   )

   (:action succumb
       :parameters (?c - pain ?v - pleasure ?n - food)
       :precondition (and (fears ?c ?v)
                          (craves ?v ?n)
                     )
       :effect (and (not (fears ?c ?v))
                    (craves ?c ?n)
                    (increase (harmony ?v) 1)
                    ))
   (:action drink
      :parameters (?n1 ?n2 - food)
      :precondition (and (>= (locale ?n1) 1))
      :effect (and (decrease (locale ?n1) 1)
                   (increase (locale ?n2) 1))
   )
)

problem.pddl

(define (problem mprime-x-25)
   (:domain mystery-prime-typed)
   (:objects wurst tuna pistachio chicken - food
             expectation rest - pleasure
             depression angina - pain
)
   (:init
(eats wurst chicken)
          (eats tuna pistachio)
          (craves angina chicken)
          (eats chicken pistachio)
          (craves rest pistachio)
(= (locale tuna) 2)
          (eats chicken wurst)
(= (harmony expectation) 1)

          (craves expectation tuna)

          (craves depression wurst)
          (eats pistachio wurst)


          (eats tuna wurst)
(= (locale wurst) 2)
          (eats pistachio tuna)

          (eats wurst tuna)
(= (harmony rest) 3)

          (eats wurst pistachio)
          (eats pistachio chicken)


(= (locale chicken) 2)
(= (locale pistachio) 5))
   (:goal (and (craves depression chicken))))

Saída para o exemplo acima

Accepted

Author: Bruno Ribas e Bruno Ribeiro