Gameplayer
Game
State
History
Manager's Rules
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Triple Sukoshi ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Components ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (role red) (role green) (role blue) (<= (base (cell ?role ?i ?j ?x)) (role ?role) (index ?i) (index ?j) (filler ?x)) (<= (input ?role (mark ?i ?j ?x)) (role ?role) (index ?i) (index ?j) (marker ?x)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; init ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (init (cell red 1 1 b)) (init (cell red 1 2 1)) (init (cell red 1 3 b)) (init (cell red 2 1 2)) (init (cell red 2 2 b)) (init (cell red 2 3 b)) (init (cell red 3 1 b)) (init (cell red 3 2 b)) (init (cell red 3 3 b)) (init (cell green 1 1 b)) (init (cell green 1 2 1)) (init (cell green 1 3 b)) (init (cell green 2 1 b)) (init (cell green 2 2 2)) (init (cell green 2 3 b)) (init (cell green 3 1 b)) (init (cell green 3 2 b)) (init (cell green 3 3 b)) (init (cell blue 1 1 b)) (init (cell blue 1 2 b)) (init (cell blue 1 3 3)) (init (cell blue 2 1 b)) (init (cell blue 2 2 b)) (init (cell blue 2 3 b)) (init (cell blue 3 1 b)) (init (cell blue 3 2 b)) (init (cell blue 3 3 2)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; legal ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (<= (legal ?role ?x) (legalmove ?role ?x)) (<= (legal ?role (mark ?i ?j x)) (true (cell ?role ?i ?j b)) (not (playable ?role))) (<= (legalmove ?role (mark ?i ?j ?x)) (true (cell ?role ?i ?j b)) (index ?x) (not (row ?role ?i ?x)) (not (col ?role ?j ?x))) (<= (playable ?role) (legalmove ?role ?x)) (<= (row ?role ?i ?x) (true (cell ?role ?i 1 ?x))) (<= (row ?role ?i ?x) (true (cell ?role ?i 2 ?x))) (<= (row ?role ?i ?x) (true (cell ?role ?i 3 ?x))) (<= (col ?role ?j ?x) (true (cell ?role 1 ?j ?x))) (<= (col ?role ?j ?x) (true (cell ?role 2 ?j ?x))) (<= (col ?role ?j ?x) (true (cell ?role 3 ?j ?x))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; next ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (<= (next (cell ?role ?i ?j ?x)) (does ?role (mark ?i ?j ?x))) (<= (next (cell ?role ?i ?j ?x)) (true (cell ?role ?i ?j ?x)) (distinct ?x b)) (<= (next (cell ?role ?i ?j b)) (does ?role (mark ?k ?l ?x)) (true (cell ?role ?i ?j b)) (distinct ?i ?k)) (<= (next (cell ?role ?i ?j b)) (does ?role (mark ?k ?l ?x)) (true (cell ?role ?i ?j b)) (distinct ?j ?l)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; goal ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (<= (goal red 100) (not (open red)) (not (bad red))) (<= (goal green 100) (not (open green)) (not (bad green))) (<= (goal blue 100) (not (open blue)) (not (bad blue))) (<= (goal ?role 0) (open ?role)) (<= (goal ?role 0) (bad ?role)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; terminal ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (<= terminal (role ?role) (not (open ?role))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Views ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (<= (filler ?x) (index ?x)) (filler b) (filler x) (<= (marker ?x) (index ?x)) (marker x) (<= (open ?role) (true (cell ?role ?i ?j b))) (<= (bad ?role) (true (cell ?role ?i ?j x))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Data ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (index 1) (index 2) (index 3) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Player's Rules
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Triple Sukoshi ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Components ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (role red) (role green) (role blue) (<= (base (cell ?role ?i ?j ?x)) (role ?role) (index ?i) (index ?j) (filler ?x)) (<= (input ?role (mark ?i ?j ?x)) (role ?role) (index ?i) (index ?j) (marker ?x)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; init ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (init (cell red 1 1 b)) (init (cell red 1 2 1)) (init (cell red 1 3 b)) (init (cell red 2 1 2)) (init (cell red 2 2 b)) (init (cell red 2 3 b)) (init (cell red 3 1 b)) (init (cell red 3 2 b)) (init (cell red 3 3 b)) (init (cell green 1 1 b)) (init (cell green 1 2 1)) (init (cell green 1 3 b)) (init (cell green 2 1 b)) (init (cell green 2 2 2)) (init (cell green 2 3 b)) (init (cell green 3 1 b)) (init (cell green 3 2 b)) (init (cell green 3 3 b)) (init (cell blue 1 1 b)) (init (cell blue 1 2 b)) (init (cell blue 1 3 3)) (init (cell blue 2 1 b)) (init (cell blue 2 2 b)) (init (cell blue 2 3 b)) (init (cell blue 3 1 b)) (init (cell blue 3 2 b)) (init (cell blue 3 3 2)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; legal ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (<= (legal ?role ?x) (legalmove ?role ?x)) (<= (legal ?role (mark ?i ?j x)) (true (cell ?role ?i ?j b)) (not (playable ?role))) (<= (legalmove ?role (mark ?i ?j ?x)) (true (cell ?role ?i ?j b)) (index ?x) (not (row ?role ?i ?x)) (not (col ?role ?j ?x))) (<= (playable ?role) (legalmove ?role ?x)) (<= (row ?role ?i ?x) (true (cell ?role ?i 1 ?x))) (<= (row ?role ?i ?x) (true (cell ?role ?i 2 ?x))) (<= (row ?role ?i ?x) (true (cell ?role ?i 3 ?x))) (<= (col ?role ?j ?x) (true (cell ?role 1 ?j ?x))) (<= (col ?role ?j ?x) (true (cell ?role 2 ?j ?x))) (<= (col ?role ?j ?x) (true (cell ?role 3 ?j ?x))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; next ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (<= (next (cell ?role ?i ?j ?x)) (does ?role (mark ?i ?j ?x))) (<= (next (cell ?role ?i ?j ?x)) (true (cell ?role ?i ?j ?x)) (distinct ?x b)) (<= (next (cell ?role ?i ?j b)) (does ?role (mark ?k ?l ?x)) (true (cell ?role ?i ?j b)) (distinct ?i ?k)) (<= (next (cell ?role ?i ?j b)) (does ?role (mark ?k ?l ?x)) (true (cell ?role ?i ?j b)) (distinct ?j ?l)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; goal ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (<= (goal red 100) (not (open red)) (not (bad red))) (<= (goal green 100) (not (open green)) (not (bad green))) (<= (goal blue 100) (not (open blue)) (not (bad blue))) (<= (goal ?role 0) (open ?role)) (<= (goal ?role 0) (bad ?role)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; terminal ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (<= terminal (role ?role) (not (open ?role))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Views ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (<= (filler ?x) (index ?x)) (filler b) (filler x) (<= (marker ?x) (index ?x)) (marker x) (<= (open ?role) (true (cell ?role ?i ?j b))) (<= (bad ?role) (true (cell ?role ?i ?j x))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Data ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (index 1) (index 2) (index 3) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Match
Startclock
Playclock
Player
Address
Ready
1