reorg, clean up, and read in logs

This commit is contained in:
Sida Wang 2017-01-16 20:37:40 -08:00
parent 6ec499ac19
commit 7fef288eef
33 changed files with 425 additions and 920 deletions

14
run
View File

@ -986,8 +986,8 @@ addMode('interactive', 'interactive semantic parsing in blocks', lambda { |e| l(
'edu.stanford.nlp.sempre.Main',
figOpts,
o('Executor', 'interactive.actions.ActionExecutor'),
o('LanguageAnalyzer', 'interactive.actions.ActionLanguageAnalyzer'),
o('Executor', 'interactive.ActionExecutor'),
o('LanguageAnalyzer', 'interactive.ActionLanguageAnalyzer'),
o('ActionExecutor.convertNumberValues', true),
o('ActionExecutor.printStackTrace', true),
o('BlocksWorld.maxBlocks', 200),
@ -1014,7 +1014,7 @@ o('Parser.beamSize', 10),
o('Params.initStepSize', 0.1),
o('Params.adaptiveStepSize', true),
o('FeatureExtractor.featureComputers', 'interactive.actions.ActionFeatureComputer'),
o('FeatureExtractor.featureComputers', 'interactive.ActionFeatureComputer'),
o('FeatureExtractor.featureDomains', 'rule', 'stats'),
lambda { |e| system 'mkdir -p ./int-output/examples/'},
@ -1023,12 +1023,12 @@ lambda { |e| system 'mkdir -p ./int-output/grammar/'},
lambda { |e| system 'mkdir -p ./int-output/json/'},
o('Master.newExamplesPath', './int-output/examples/'),
# o('Master.logPath', './int-output/logs/'),
o('Master.logPath', './int-output/logs/'),
o('Master.newGrammarPath', './int-output/grammar/'),
o('ILUtils.JSONLogPath', './int-output/json/'),
o('ILUtils.newInteractiveCommandLog', './int-output/interactive.log'),
o('ILUtils.interactiveCommandLog', './shrdlurn/basic-input.log'),
o('ILUtils.commandLog', './int-output/interactive.log'),
o('ILUtils.commandInputs', './shrdlurn/commandInputs/*.json'),
o('Master.onlineLearnExamples', true),
o('Master.independentSessions', false),
@ -1036,7 +1036,7 @@ o('Master.independentSessions', false),
o('Master.onlyInteractive', true),
o('server', true),
o('Server.numThreads', 8),
o('Server.numThreads', 16),
o('Server.maxCandidates', 50),
o('Derivation.showTypes', false),
nil) })

View File

@ -1,2 +1,5 @@
Run: ./run @mode=interactive -Server.port 8410
Test command : ./run @mode=test @class=interactive.actions.ActionExecutorTest -verbose 5
Extracting query from sempre log:
awk -F"\t" '{sub("query=","",$5); print $5}'
cat ~/git/sidaw_acl2015/int-output/logs/_*.log | awk -F"\t" '{sub("query=","",$5); if (index($5, "(:def")!=0 ) print $5;}'

View File

@ -1,195 +0,0 @@
# contextful top level functions
# command:
(def @root context:root)
(def @put put)
(def @base base)
# basic actions
(def @add add)
(def @remove remove)
(def @move move)
(def @name name)
# action combinators
(def @seq seq)
(def @repeat repeat)
(def @scope scope)
# binary set operations
(def @setopv setops)
(def @setops setops)
(def @filter filter)
# get property
(def @ofv ofv)
(def @ofs ofs)
(def @has has)
(def @val val)
(def @single single)
# numbers
(def @compare compare)
(def @constant constant)
(def @arith arith)
# set function
(def @veryx veryx)
# select
(def @name name)
(def @named named)
# sugar
(def @selected marked)
(def @select mark)
(def @base base)
# special values
(def @sets sets) # constant sets
(def @setf setf) # set functions
(def @reset reset) # reset the world
# typed lambdas
# Action a, CubesSet s, CubePredicate p, CubeNumber n, CubeProperty r, Direction d, Color c $CubeNumberProp q
# This grammar should have Rule.defaultIsFloating false
# utilities
(rule $ROOT (reset) (ConstantFn (call @reset (string default))) (anchored 1))
(rule $ROOT (reset $TOKEN) (lambda n (call @reset (var n))) (anchored 1))
(rule $Action (put $Color $Number $Number) (lambda c (lambda x (lambda y (call @put (var c) (var x) (var y))))) (anchored 1))
(rule $Action (base $Number $Number) (lambda x (lambda y (call @base (var x) (var y)))) (anchored 1))
(rule $ROOT (_contextcmd) (ConstantFn (string "(context (graph NaiveKnowledgeGraph ((string [[1,3,1,\"Green\",[]],[2,2,1,\"Blue\",[]],[1,3,2,\"Red\",[]]]) (name b) (name c))))")) (anchored 1))
####### Start of the actual grammar
(rule $ROOT ($ActionSeq) (lambda a (call @root (var a))) (anchored 1)) # process for better
(rule $ROOT ($SetCube2) (lambda a (call @root (call @select (var a)))) (anchored 1)) # process for better
(rule $Action ({ $ActionSeq }) (lambda a (call @scope (var a))) (anchored 1)) # scope variables inside this
# control flow
(rule $ActionSeq ($ActionSeq ; $Action) (lambda a1 (lambda a2 (call @seq (var a1) (var a2)))) (anchored 1))
(rule $Action (repeat $NumberSeq [ $ActionSeq ] ) (lambda n (lambda a (call @repeat (var n) (var a)))) (anchored 1))
(rule $ActionSeq ($Action) (IdentityFn) (anchored 1))
(rule $Action ([ $ActionSeq ]) (IdentityFn) (anchored 1))
# basic actions, faking local scope
(rule $Action (for $SetCube2 remove) (lambda s (call @remove (var s))) (anchored 1))
(rule $Action (for $SetCube2 add $Color) (lambda s (lambda c (call @add (var c) (string top) (var s)))) (anchored 1))
(rule $Action (for $SetCube2 add $Color $Direction) (lambda s (lambda c (lambda d (call @add (var c) (var d) (var s))))) (anchored 1))
(rule $Action (for $SetCube2 move $Direction) (lambda s (lambda d (call @move (var d) (var s)))) (anchored 1))
(rule $Action (for $SetCube2 change $Rel to $SetValue) (lambda s (lambda r (lambda c (call @change (var r) (var v) (var s))))) (anchored 1))
# basic actions with implicit arguments
(rule $Action (remove) (ConstantFn (call @remove (call @selected))) (anchored 1))
(rule $Action (add $Color) (lambda c (call @add (var c) (string top) (call @selected))) (anchored 1))
(rule $Action (add $Color $Direction) (lambda c (lambda d (call @add (var c) (var d) (call @selected)))) (anchored 1))
(rule $Action (move $Direction) (lambda d (call @move (var d) (call @selected))) (anchored 1))
(rule $Action (change $Rel to $SetValue) (lambda r (lambda v (call @change (var r) (var v) (call @selected)))) (anchored 1))
# global scope
(rule $Action (select $SetCube2) (lambda s (call @select (var s))) (anchored 1))
# names
(for @varname (x y z)
(rule $Action (name $SetCube2 @varname) (lambda s (call @name (var s) (string @varname))) (anchored 1))
(rule $SetCube (@varname) (ConstantFn (call @named (string @varname))) (anchored 1))
)
(rule $SetCube (selected) (ConstantFn (call @selected)) (anchored 1))
(rule $SetCube (this) (ConstantFn (call @selected)) (anchored 1))
(rule $SetCube (base) (ConstantFn (call @base)) (anchored 1))
########### basic sets
(rule $SetCube (all) (ConstantFn (call @sets (string all))) (anchored 1))
########### basic set operations
# just use or and filter, which does and
(for @op (or and except)
(rule $SetCube2 ($SetCube2 @op $SetCube) (lambda s1 (lambda s2
(call @setopv (string @op) (var s1) (var s2)))) (anchored 1))
(rule $SetValue ($SetValue @op $SetValue) (lambda s1 (lambda s2
(call @setops (string @op) (var s1) (var s2)))) (anchored 1))
)
(rule $SetCube2 ($SetCube) (IdentityFn) (anchored 1))
(rule $SetCube ([ $SetCube2 ]) (IdentityFn) (anchored 1))
########### cube to cube relations
(rule $SetCube ($Direction of $SetCube2) (lambda d (lambda s
(call @ofs (var d) (var s)))) (anchored 1))
(rule $SetCube (very $Direction of $SetCube2) (lambda d (lambda s
(call @veryx (var d) (var s)))) (anchored 1))
############# Set of values, like color of, name of
(rule $SetValue ($Rel of $SetCube2) (lambda r (lambda s
(call @ofv (var r) (var s)))) (anchored 1))
(rule $SetCube (has $Rel $SetValue) (lambda r (lambda s
(call @has (var r) (var s)))) (anchored 1))
(for @property (col row height color name age)
(rule $Rel (@property) (ConstantFn (string @property)) (anchored 1))
)
(rule $SetValue ($Color) (lambda c (call @val (var c))) (anchored 1))
(rule $SetValue ($Number) (lambda n (call @single (var n))) (anchored 1))
########### arithmetics and etc
(for @num (0 1 2 3 4 5 6 7 8 9)
(rule $Number (@num) (ConstantFn (number @num)) (anchored 1))
)
(rule $Number (many) (ConstantFn (number 10 infty)) (anchored 1))
(for @op (+ - %)
(rule $NumberSeq ($NumberSeq @op $Number) (lambda n1 (lambda n2
(call @arith (string @op) (var n1) (var n2)))) (anchored 1))
)
(rule $Number ([ $NumberSeq ]) (IdentityFn) (anchored 1))
(rule $NumberSeq ( $Number ) (IdentityFn) (anchored 1))
(for @rel (> >= = < <= ==)
(rule $Pred ($NumberSeq @rel $NumberSeq) (lambda n1 (lambda n2
(call @compare (string @rel) (var n1) (var n2)))) (anchored 1))
)
####### Constants
(for @dir (top bot left right front back)
(rule $Direction (@dir) (ConstantFn (string @dir)) (anchored 1))
)
(for @varname (x y z)
(rule $Name (@varname) (ConstantFn (string @varname)) (anchored 1))
)
(rule $Color (red) (ConstantFn (string red)) (anchored 1))
(rule $Color (orange) (ConstantFn (string orange)) (anchored 1))
(rule $Color (yellow) (ConstantFn (string yellow)) (anchored 1))
(rule $Color (green) (ConstantFn (string green)) (anchored 1))
(rule $Color (blue) (ConstantFn (string blue)) (anchored 1))
(rule $Color (white) (ConstantFn (string white)) (anchored 1))
(rule $Color (black) (ConstantFn (string black)) (anchored 1))
(rule $Color (pink) (ConstantFn (string pink)) (anchored 1))
(rule $Color (brown) (ConstantFn (string brown)) (anchored 1))
(rule $Keyword (add) (ConstantFn (string keyword)))
(rule $Keyword (remove) (ConstantFn (string keyword)))
(rule $Keyword (repeat) (ConstantFn (string keyword)))
(rule $Keyword (has) (ConstantFn (string keyword)))
(rule $Keyword (of) (ConstantFn (string keyword)))
(rule $Keyword (col) (ConstantFn (string keyword)))
(rule $Keyword (row) (ConstantFn (string keyword)))
(rule $Keyword (height) (ConstantFn (string keyword)))
(rule $Keyword (color) (ConstantFn (string keyword)))
(rule $Keyword (top) (ConstantFn (string keyword)))
(rule $Keyword (bot) (ConstantFn (string keyword)))
(rule $Keyword (left) (ConstantFn (string keyword)))
(rule $Keyword (right) (ConstantFn (string keyword)))
(rule $Keyword (front) (ConstantFn (string keyword)))
(rule $Keyword (back) (ConstantFn (string keyword)))
(rule $Keyword (and) (ConstantFn (string keyword)))
(rule $Keyword (or) (ConstantFn (string keyword)))

View File

@ -1,64 +0,0 @@
{"time":"2017-01-15T23:20:47.151","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-15T23:20:47.211","id":"sidaw","log":"(:q \"add red\")"}
{"time":"2017-01-15T23:20:47.528","id":"sidaw","log":"(:accept \"add red\" \"(: add red here)\")"}
{"time":"2017-01-15T23:20:47.548","id":"sidaw","log":"(:autocomplete \"\")"}
{"time":"2017-01-15T23:20:52.539","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-15T23:20:52.548","id":"sidaw","log":"(:q \"add red top\")"}
{"time":"2017-01-15T23:20:52.884","id":"sidaw","log":"(:accept \"add red top\" \"(: add red top)\")"}
{"time":"2017-01-15T23:20:52.890","id":"sidaw","log":"(:autocomplete \"\")"}
{"time":"2017-01-15T23:20:54.360","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[]]])"}
{"time":"2017-01-15T23:20:54.369","id":"sidaw","log":"(:q \"select red\")"}
{"time":"2017-01-15T23:20:57.765","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[]]])"}
{"time":"2017-01-15T23:20:57.778","id":"sidaw","log":"(:q \"select has color red\")"}
{"time":"2017-01-15T23:20:58.068","id":"sidaw","log":"(:accept \"select has color red\" \"(:for (color red) (: select))\")"}
{"time":"2017-01-15T23:20:58.087","id":"sidaw","log":"(:autocomplete \"\")"}
{"time":"2017-01-15T23:20:59.982","id":"sidaw","log":"(:def_ret \"select red\" \"[[\\\"select has color red\\\",\\\"(:for (color red) (: select))\\\"]]\")"}
{"time":"2017-01-15T23:21:08.531","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-15T23:21:08.539","id":"sidaw","log":"(:q \"select origin\")"}
{"time":"2017-01-15T23:21:09.366","id":"sidaw","log":"(:accept \"select origin\" \"(:for (call origin) (: select))\")"}
{"time":"2017-01-15T23:21:09.371","id":"sidaw","log":"(:autocomplete \"\")"}
{"time":"2017-01-15T23:21:15.471","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[]]])"}
{"time":"2017-01-15T23:21:15.494","id":"sidaw","log":"(:q \"yellow stick 5\")"}
{"time":"2017-01-15T23:21:32.361","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[]]])"}
{"time":"2017-01-15T23:21:32.374","id":"sidaw","log":"(:q \"add yellow top 4 times\")"}
{"time":"2017-01-15T23:21:36.602","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[]]])"}
{"time":"2017-01-15T23:21:36.620","id":"sidaw","log":"(:q \"repeat 4 [ add yellow top]\")"}
{"time":"2017-01-15T23:21:37.173","id":"sidaw","log":"(:accept \"repeat 4 [ add yellow top]\" \"(:loop (number 4) (: add yellow top))\")"}
{"time":"2017-01-15T23:21:37.183","id":"sidaw","log":"(:autocomplete \"\")"}
{"time":"2017-01-15T23:21:39.608","id":"sidaw","log":"(:def_ret \"add yellow top 4 times\" \"[[\\\"repeat 4 [ add yellow top]\\\",\\\"(:loop (number 4) (: add yellow top))\\\"]]\")"}
{"time":"2017-01-15T23:21:43.980","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,0,4,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[]]])"}
{"time":"2017-01-15T23:21:43.993","id":"sidaw","log":"(:q \"add red 4 times\")"}
{"time":"2017-01-15T23:21:46.945","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,0,4,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[]]])"}
{"time":"2017-01-15T23:21:46.967","id":"sidaw","log":"(:q \"add red top 4 times\")"}
{"time":"2017-01-15T23:21:47.547","id":"sidaw","log":"(:accept \"add red top 4 times\" \"(:loop (number 4) (: add red top))\")"}
{"time":"2017-01-15T23:21:47.553","id":"sidaw","log":"(:autocomplete \"\")"}
{"time":"2017-01-15T23:21:54.311","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,0,4,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[]],[0,0,6,\\\"Red\\\",[]],[0,0,7,\\\"Red\\\",[]],[0,0,8,\\\"Red\\\",[]],[0,0,9,\\\"Red\\\",[]]])"}
{"time":"2017-01-15T23:21:54.333","id":"sidaw","log":"(:q \"red stick size 4\")"}
{"time":"2017-01-15T23:22:02.232","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,0,4,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[]],[0,0,6,\\\"Red\\\",[]],[0,0,7,\\\"Red\\\",[]],[0,0,8,\\\"Red\\\",[]],[0,0,9,\\\"Red\\\",[]]])"}
{"time":"2017-01-15T23:22:02.250","id":"sidaw","log":"(:q \"[add red; select top] 4 times\")"}
{"time":"2017-01-15T23:22:02.877","id":"sidaw","log":"(:accept \"[add red; select top] 4 times\" \"(:loop (number 4) (:s (: add red here) (:for (call adj top) (: select))))\")"}
{"time":"2017-01-15T23:22:02.891","id":"sidaw","log":"(:autocomplete \"\")"}
{"time":"2017-01-15T23:22:06.003","id":"sidaw","log":"(:def_ret \"red stick size 4\" \"[[\\\"[add red; select top] 4 times\\\",\\\"(:loop (number 4) (:s (: add red here) (:for (call adj top) (: select))))\\\"]]\")"}
{"time":"2017-01-15T23:22:16.995","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-15T23:22:17.003","id":"sidaw","log":"(:q \"red square size 4\")"}
{"time":"2017-01-15T23:22:21.425","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-15T23:22:21.446","id":"sidaw","log":"(:q \"red stick size 4\")"}
{"time":"2017-01-15T23:22:35.484","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-15T23:22:35.505","id":"sidaw","log":"(:q \"red sq size 4\")"}
{"time":"2017-01-15T23:22:45.751","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-15T23:22:45.773","id":"sidaw","log":"(:q \"repeat 4 [{red stick size 4}]\")"}
{"time":"2017-01-15T23:22:49.522","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-15T23:22:49.540","id":"sidaw","log":"(:q \"repeat 4 [{red stick size 4}; select left]\")"}
{"time":"2017-01-15T23:22:50.572","id":"sidaw","log":"(:accept \"repeat 4 [{red stick size 4}; select left]\" \"(:loop (number 4) (:s (:blk (:loop (number 4) (:s (: add red here) (:for (call adj top) (: select))))) (:for (call adj left) (: select))))\")"}
{"time":"2017-01-15T23:22:50.594","id":"sidaw","log":"(:autocomplete \"\")"}
{"time":"2017-01-15T23:22:52.181","id":"sidaw","log":"(:def_ret \"red sq size 4\" \"[[\\\"repeat 4 [{red stick size 4}; select left]\\\",\\\"(:loop (number 4) (:s (:blk (:loop (number 4) (:s (: add red here) (:for (call adj top) (: select))))) (:for (call adj left) (: select))))\\\"]]\")"}
{"time":"2017-01-15T23:24:11.450","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-15T23:24:11.465","id":"sidaw","log":"(:q \"red sq size 4\")"}
{"time":"2017-01-15T23:24:12.270","id":"sidaw","log":"(:accept \"red sq size 4\" \"(:loop (number 4) (:s (:blk (:loop (number 4) (:s (: add red here) (:for (call adj top) (: select))))) (:for (call adj left) (: select))))\")"}
{"time":"2017-01-15T23:24:12.281","id":"sidaw","log":"(:autocomplete \"\")"}
{"time":"2017-01-15T23:24:52.169","id":"sidaw","log":"(:context [[0,4,0,\\\"Fake\\\",[\\\"S\\\"]],[0,3,0,\\\"Red\\\",[]],[0,2,0,\\\"Red\\\",[]],[0,1,0,\\\"Red\\\",[]],[0,0,0,\\\"Red\\\",[]],[0,3,1,\\\"Red\\\",[]],[0,2,1,\\\"Red\\\",[]],[0,1,1,\\\"Red\\\",[]],[0,0,1,\\\"Red\\\",[]],[0,3,2,\\\"Red\\\",[]],[0,2,2,\\\"Red\\\",[]],[0,1,2,\\\"Red\\\",[]],[0,0,2,\\\"Red\\\",[]],[0,3,3,\\\"Red\\\",[]],[0,2,3,\\\"Red\\\",[]],[0,1,3,\\\"Red\\\",[]],[0,0,3,\\\"Red\\\",[]]])"}
{"time":"2017-01-15T23:24:52.177","id":"sidaw","log":"(:q \"add red top\")"}
{"time":"2017-01-15T23:24:52.666","id":"sidaw","log":"(:accept \"add red top\" \"(: add red top)\")"}
{"time":"2017-01-15T23:24:52.677","id":"sidaw","log":"(:autocomplete \"\")"}
{"time":"2017-01-15T23:35:07.925","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-15T23:35:07.950","id":"sidaw","log":"(:q \"add red top 3 times\")"}

View File

@ -0,0 +1,238 @@
{"time":"2017-01-16T20:18:42.275","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:18:42.304","id":"sidaw","log":"(:q \"add red top 3 times\")"}
{"time":"2017-01-16T20:19:41.490","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:19:41.563","id":"sidaw","log":"(:q \"add red top\")"}
{"time":"2017-01-16T20:19:42.279","id":"sidaw","log":"(:accept \"add red top\" \"(: add red top)\")"}
{"time":"2017-01-16T20:20:17.464","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[]]])"}
{"time":"2017-01-16T20:20:17.485","id":"sidaw","log":"(:q \"add red top 3 times\")"}
{"time":"2017-01-16T20:20:24.574","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[]]])"}
{"time":"2017-01-16T20:20:24.584","id":"sidaw","log":"(:q \"repeat 3 [add red top]\")"}
{"time":"2017-01-16T20:20:25.807","id":"sidaw","log":"(:accept \"repeat 3 [add red top]\" \"(:loop (number 3) (: add red top))\")"}
{"time":"2017-01-16T20:20:27.553","id":"sidaw","log":"(:def_ret \"add red top 3 times\" \"[[\\\"repeat 3 [add red top]\\\",\\\"(:loop (number 3) (: add red top))\\\"]]\")"}
{"time":"2017-01-16T20:20:47.587","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[]],[0,0,2,\\\"Red\\\",[]],[0,0,3,\\\"Red\\\",[]],[0,0,4,\\\"Red\\\",[]]])"}
{"time":"2017-01-16T20:20:47.596","id":"sidaw","log":"(:q \"add cardinal\")"}
{"time":"2017-01-16T20:20:50.938","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[]],[0,0,2,\\\"Red\\\",[]],[0,0,3,\\\"Red\\\",[]],[0,0,4,\\\"Red\\\",[]]])"}
{"time":"2017-01-16T20:20:50.957","id":"sidaw","log":"(:q \"add red\")"}
{"time":"2017-01-16T20:20:51.834","id":"sidaw","log":"(:accept \"add red\" \"(: add red here)\")"}
{"time":"2017-01-16T20:20:52.964","id":"sidaw","log":"(:def_ret \"add cardinal\" \"[[\\\"add red\\\",\\\"(: add red here)\\\"]]\")"}
{"time":"2017-01-16T20:21:29.720","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[]],[0,0,2,\\\"Red\\\",[]],[0,0,3,\\\"Red\\\",[]],[0,0,4,\\\"Red\\\",[]]])"}
{"time":"2017-01-16T20:21:29.739","id":"sidaw","log":"(:q \"yellow stick size 5\")"}
{"time":"2017-01-16T20:21:36.790","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[]],[0,0,2,\\\"Red\\\",[]],[0,0,3,\\\"Red\\\",[]],[0,0,4,\\\"Red\\\",[]]])"}
{"time":"2017-01-16T20:21:36.804","id":"sidaw","log":"(:q \"repeat 5 [ add yellow; select top]\")"}
{"time":"2017-01-16T20:21:38.040","id":"sidaw","log":"(:accept \"repeat 5 [ add yellow; select top]\" \"(:loop (number 5) (:s (: add yellow here) (: select (call adj top))))\")"}
{"time":"2017-01-16T20:21:39.297","id":"sidaw","log":"(:def_ret \"yellow stick size 5\" \"[[\\\"repeat 5 [ add yellow; select top]\\\",\\\"(:loop (number 5) (:s (: add yellow here) (: select (call adj top))))\\\"]]\")"}
{"time":"2017-01-16T20:21:50.459","id":"sidaw","log":"(:context [[0,0,0,\\\"Yellow\\\",[]],[0,0,1,\\\"Yellow\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,0,4,\\\"Yellow\\\",[]],[0,0,5,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:21:50.477","id":"sidaw","log":"(:q \"yellow beam left 5\")"}
{"time":"2017-01-16T20:22:00.712","id":"sidaw","log":"(:context [[0,0,0,\\\"Yellow\\\",[]],[0,0,1,\\\"Yellow\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,0,4,\\\"Yellow\\\",[]],[0,0,5,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:22:00.726","id":"sidaw","log":"(:q \"{repeat 5 [ add yellow; select left]}\")"}
{"time":"2017-01-16T20:22:01.403","id":"sidaw","log":"(:accept \"{repeat 5 [ add yellow; select left]}\" \"(:blk (:loop (number 5) (:s (: add yellow here) (: select (call adj left)))))\")"}
{"time":"2017-01-16T20:22:07.368","id":"sidaw","log":"(:def_ret \"yellow beam left 5\" \"[[\\\"{repeat 5 [ add yellow; select left]}\\\",\\\"(:blk (:loop (number 5) (:s (: add yellow here) (: select (call adj left)))))\\\"]]\")"}
{"time":"2017-01-16T20:22:39.747","id":"sidaw","log":"(:context [[0,0,0,\\\"Yellow\\\",[]],[0,0,1,\\\"Yellow\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,0,4,\\\"Yellow\\\",[]],[0,4,5,\\\"Yellow\\\",[]],[0,3,5,\\\"Yellow\\\",[]],[0,2,5,\\\"Yellow\\\",[]],[0,1,5,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:22:39.756","id":"sidaw","log":"(:q \"move down\")"}
{"time":"2017-01-16T20:22:42.497","id":"sidaw","log":"(:context [[0,0,0,\\\"Yellow\\\",[]],[0,0,1,\\\"Yellow\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,0,4,\\\"Yellow\\\",[]],[0,4,5,\\\"Yellow\\\",[]],[0,3,5,\\\"Yellow\\\",[]],[0,2,5,\\\"Yellow\\\",[]],[0,1,5,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:22:42.515","id":"sidaw","log":"(:q \"move bot\")"}
{"time":"2017-01-16T20:22:52.058","id":"sidaw","log":"(:context [[0,0,0,\\\"Yellow\\\",[]],[0,0,1,\\\"Yellow\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,0,4,\\\"Yellow\\\",[]],[0,4,5,\\\"Yellow\\\",[]],[0,3,5,\\\"Yellow\\\",[]],[0,2,5,\\\"Yellow\\\",[]],[0,1,5,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:22:52.081","id":"sidaw","log":"(:q \"select bot\")"}
{"time":"2017-01-16T20:22:52.784","id":"sidaw","log":"(:accept \"select bot\" \"(: select (call adj bot))\")"}
{"time":"2017-01-16T20:22:53.888","id":"sidaw","log":"(:def_ret \"move down\" \"[[\\\"select bot\\\",\\\"(: select (call adj bot))\\\"]]\")"}
{"time":"2017-01-16T20:22:57.219","id":"sidaw","log":"(:context [[0,0,0,\\\"Yellow\\\",[]],[0,0,1,\\\"Yellow\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,0,4,\\\"Yellow\\\",[\\\"S\\\"]],[0,4,5,\\\"Yellow\\\",[]],[0,3,5,\\\"Yellow\\\",[]],[0,2,5,\\\"Yellow\\\",[]],[0,1,5,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[]]])"}
{"time":"2017-01-16T20:22:57.238","id":"sidaw","log":"(:q \"move down\")"}
{"time":"2017-01-16T20:23:00.601","id":"sidaw","log":"(:context [[0,0,0,\\\"Yellow\\\",[]],[0,0,1,\\\"Yellow\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,0,4,\\\"Yellow\\\",[\\\"S\\\"]],[0,4,5,\\\"Yellow\\\",[]],[0,3,5,\\\"Yellow\\\",[]],[0,2,5,\\\"Yellow\\\",[]],[0,1,5,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[]]])"}
{"time":"2017-01-16T20:23:00.610","id":"sidaw","log":"(:q \"move bot\")"}
{"time":"2017-01-16T20:23:07.227","id":"sidaw","log":"(:context [[0,0,0,\\\"Yellow\\\",[]],[0,0,1,\\\"Yellow\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,0,4,\\\"Yellow\\\",[\\\"S\\\"]],[0,4,5,\\\"Yellow\\\",[]],[0,3,5,\\\"Yellow\\\",[]],[0,2,5,\\\"Yellow\\\",[]],[0,1,5,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[]]])"}
{"time":"2017-01-16T20:23:07.236","id":"sidaw","log":"(:q \"move right\")"}
{"time":"2017-01-16T20:23:31.328","id":"sidaw","log":"(:accept \"move right\" \"(: move right)\")"}
{"time":"2017-01-16T20:23:32.791","id":"sidaw","log":"(:context [[0,0,0,\\\"Yellow\\\",[]],[0,0,1,\\\"Yellow\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,-1,4,\\\"Yellow\\\",[\\\"S\\\"]],[0,4,5,\\\"Yellow\\\",[]],[0,3,5,\\\"Yellow\\\",[]],[0,2,5,\\\"Yellow\\\",[]],[0,1,5,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[]]])"}
{"time":"2017-01-16T20:23:32.810","id":"sidaw","log":"(:q \"move up\")"}
{"time":"2017-01-16T20:23:35.859","id":"sidaw","log":"(:context [[0,0,0,\\\"Yellow\\\",[]],[0,0,1,\\\"Yellow\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,-1,4,\\\"Yellow\\\",[\\\"S\\\"]],[0,4,5,\\\"Yellow\\\",[]],[0,3,5,\\\"Yellow\\\",[]],[0,2,5,\\\"Yellow\\\",[]],[0,1,5,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[]]])"}
{"time":"2017-01-16T20:23:35.872","id":"sidaw","log":"(:q \"move top\")"}
{"time":"2017-01-16T20:23:37.986","id":"sidaw","log":"(:accept \"move top\" \"(: move top)\")"}
{"time":"2017-01-16T20:23:38.638","id":"sidaw","log":"(:def_ret \"move up\" \"[[\\\"move top\\\",\\\"(: move top)\\\"]]\")"}
{"time":"2017-01-16T20:23:40.728","id":"sidaw","log":"(:context [[0,0,0,\\\"Yellow\\\",[]],[0,0,1,\\\"Yellow\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,4,5,\\\"Yellow\\\",[]],[0,3,5,\\\"Yellow\\\",[]],[0,2,5,\\\"Yellow\\\",[]],[0,1,5,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[]],[0,-1,5,\\\"Yellow\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:23:40.752","id":"sidaw","log":"(:q \"move up\")"}
{"time":"2017-01-16T20:23:42.136","id":"sidaw","log":"(:accept \"move up\" \"(: move top)\")"}
{"time":"2017-01-16T20:23:45.099","id":"sidaw","log":"(:accept \"move up\" \"(not *)\")"}
{"time":"2017-01-16T20:23:47.149","id":"sidaw","log":"(:context [[0,0,0,\\\"Yellow\\\",[]],[0,0,1,\\\"Yellow\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,4,5,\\\"Yellow\\\",[]],[0,3,5,\\\"Yellow\\\",[]],[0,2,5,\\\"Yellow\\\",[]],[0,1,5,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[]],[0,-1,6,\\\"Yellow\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:23:47.172","id":"sidaw","log":"(:q \"select top\")"}
{"time":"2017-01-16T20:23:47.967","id":"sidaw","log":"(:accept \"select top\" \"(: select (call adj top))\")"}
{"time":"2017-01-16T20:23:49.312","id":"sidaw","log":"(:def_ret \"move up\" \"[[\\\"select top\\\",\\\"(: select (call adj top))\\\"]]\")"}
{"time":"2017-01-16T20:23:50.602","id":"sidaw","log":"(:context [[0,0,0,\\\"Yellow\\\",[]],[0,0,1,\\\"Yellow\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,4,5,\\\"Yellow\\\",[]],[0,3,5,\\\"Yellow\\\",[]],[0,2,5,\\\"Yellow\\\",[]],[0,1,5,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[]],[0,-1,6,\\\"Yellow\\\",[]],[0,-1,7,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:23:50.610","id":"sidaw","log":"(:q \"move up\")"}
{"time":"2017-01-16T20:23:58.975","id":"sidaw","log":"(:context [[0,0,0,\\\"Yellow\\\",[]],[0,0,1,\\\"Yellow\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,4,5,\\\"Yellow\\\",[]],[0,3,5,\\\"Yellow\\\",[]],[0,2,5,\\\"Yellow\\\",[]],[0,1,5,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[]],[0,-1,6,\\\"Yellow\\\",[]],[0,-1,7,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:23:58.984","id":"sidaw","log":"(:q \"select yellow\")"}
{"time":"2017-01-16T20:24:03.679","id":"sidaw","log":"(:context [[0,0,0,\\\"Yellow\\\",[]],[0,0,1,\\\"Yellow\\\",[]],[0,0,2,\\\"Yellow\\\",[]],[0,0,3,\\\"Yellow\\\",[]],[0,4,5,\\\"Yellow\\\",[]],[0,3,5,\\\"Yellow\\\",[]],[0,2,5,\\\"Yellow\\\",[]],[0,1,5,\\\"Yellow\\\",[]],[0,0,5,\\\"Yellow\\\",[]],[0,-1,6,\\\"Yellow\\\",[]],[0,-1,7,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:24:03.689","id":"sidaw","log":"(:q \"select has color yellow\")"}
{"time":"2017-01-16T20:24:06.546","id":"sidaw","log":"(:accept \"select has color yellow\" \"(: select (color yellow))\")"}
{"time":"2017-01-16T20:24:07.339","id":"sidaw","log":"(:def_ret \"select yellow\" \"[[\\\"select has color yellow\\\",\\\"(: select (color yellow))\\\"]]\")"}
{"time":"2017-01-16T20:24:11.430","id":"sidaw","log":"(:context [[0,0,0,\\\"Yellow\\\",[\\\"S\\\"]],[0,0,1,\\\"Yellow\\\",[\\\"S\\\"]],[0,0,2,\\\"Yellow\\\",[\\\"S\\\"]],[0,0,3,\\\"Yellow\\\",[\\\"S\\\"]],[0,4,5,\\\"Yellow\\\",[\\\"S\\\"]],[0,3,5,\\\"Yellow\\\",[\\\"S\\\"]],[0,2,5,\\\"Yellow\\\",[\\\"S\\\"]],[0,1,5,\\\"Yellow\\\",[\\\"S\\\"]],[0,0,5,\\\"Yellow\\\",[\\\"S\\\"]],[0,-1,6,\\\"Yellow\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:24:11.448","id":"sidaw","log":"(:q \"update color red\")"}
{"time":"2017-01-16T20:24:11.934","id":"sidaw","log":"(:accept \"update color red\" \"(: update color red)\")"}
{"time":"2017-01-16T20:24:15.004","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[\\\"S\\\"]],[0,0,2,\\\"Red\\\",[\\\"S\\\"]],[0,0,3,\\\"Red\\\",[\\\"S\\\"]],[0,4,5,\\\"Red\\\",[\\\"S\\\"]],[0,3,5,\\\"Red\\\",[\\\"S\\\"]],[0,2,5,\\\"Red\\\",[\\\"S\\\"]],[0,1,5,\\\"Red\\\",[\\\"S\\\"]],[0,0,5,\\\"Red\\\",[\\\"S\\\"]],[0,-1,6,\\\"Red\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:24:15.018","id":"sidaw","log":"(:q \"select origin\")"}
{"time":"2017-01-16T20:24:15.486","id":"sidaw","log":"(:accept \"select origin\" \"(: select (call origin))\")"}
{"time":"2017-01-16T20:24:17.301","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[]],[0,0,2,\\\"Red\\\",[]],[0,0,3,\\\"Red\\\",[]],[0,4,5,\\\"Red\\\",[]],[0,3,5,\\\"Red\\\",[]],[0,2,5,\\\"Red\\\",[]],[0,1,5,\\\"Red\\\",[]],[0,0,5,\\\"Red\\\",[]],[0,-1,6,\\\"Red\\\",[]]])"}
{"time":"2017-01-16T20:24:17.325","id":"sidaw","log":"(:q \"select red\")"}
{"time":"2017-01-16T20:24:17.815","id":"sidaw","log":"(:accept \"select red\" \"(: select (color red))\")"}
{"time":"2017-01-16T20:24:29.797","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[\\\"S\\\"]],[0,0,2,\\\"Red\\\",[\\\"S\\\"]],[0,0,3,\\\"Red\\\",[\\\"S\\\"]],[0,4,5,\\\"Red\\\",[\\\"S\\\"]],[0,3,5,\\\"Red\\\",[\\\"S\\\"]],[0,2,5,\\\"Red\\\",[\\\"S\\\"]],[0,1,5,\\\"Red\\\",[\\\"S\\\"]],[0,0,5,\\\"Red\\\",[\\\"S\\\"]],[0,-1,6,\\\"Red\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:24:29.820","id":"sidaw","log":"(:q \"foreach red [move right]\")"}
{"time":"2017-01-16T20:24:38.318","id":"sidaw","log":"(:context [[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[0,0,1,\\\"Red\\\",[\\\"S\\\"]],[0,0,2,\\\"Red\\\",[\\\"S\\\"]],[0,0,3,\\\"Red\\\",[\\\"S\\\"]],[0,4,5,\\\"Red\\\",[\\\"S\\\"]],[0,3,5,\\\"Red\\\",[\\\"S\\\"]],[0,2,5,\\\"Red\\\",[\\\"S\\\"]],[0,1,5,\\\"Red\\\",[\\\"S\\\"]],[0,0,5,\\\"Red\\\",[\\\"S\\\"]],[0,-1,6,\\\"Red\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:24:38.331","id":"sidaw","log":"(:q \"foreach has color red [move right]\")"}
{"time":"2017-01-16T20:24:39.135","id":"sidaw","log":"(:accept \"foreach has color red [move right]\" \"(:foreach (color red) (: move right))\")"}
{"time":"2017-01-16T20:24:40.765","id":"sidaw","log":"(:def_ret \"foreach red [move right]\" \"[[\\\"foreach has color red [move right]\\\",\\\"(:foreach (color red) (: move right))\\\"]]\")"}
{"time":"2017-01-16T20:24:46.654","id":"sidaw","log":"(:context [[0,-1,0,\\\"Red\\\",[\\\"S\\\"]],[0,-1,1,\\\"Red\\\",[\\\"S\\\"]],[0,-1,2,\\\"Red\\\",[\\\"S\\\"]],[0,-1,3,\\\"Red\\\",[\\\"S\\\"]],[0,3,5,\\\"Red\\\",[\\\"S\\\"]],[0,2,5,\\\"Red\\\",[\\\"S\\\"]],[0,1,5,\\\"Fake\\\",[\\\"S\\\"]],[0,0,5,\\\"Red\\\",[\\\"S\\\"]],[0,-1,5,\\\"Fake\\\",[\\\"S\\\"]],[0,-2,6,\\\"Red\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:24:46.674","id":"sidaw","log":"(:q \"remove red\")"}
{"time":"2017-01-16T20:24:55.624","id":"sidaw","log":"(:context [[0,-1,0,\\\"Red\\\",[\\\"S\\\"]],[0,-1,1,\\\"Red\\\",[\\\"S\\\"]],[0,-1,2,\\\"Red\\\",[\\\"S\\\"]],[0,-1,3,\\\"Red\\\",[\\\"S\\\"]],[0,3,5,\\\"Red\\\",[\\\"S\\\"]],[0,2,5,\\\"Red\\\",[\\\"S\\\"]],[0,1,5,\\\"Fake\\\",[\\\"S\\\"]],[0,0,5,\\\"Red\\\",[\\\"S\\\"]],[0,-1,5,\\\"Fake\\\",[\\\"S\\\"]],[0,-2,6,\\\"Red\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:24:55.642","id":"sidaw","log":"(:q \"remove has color red\")"}
{"time":"2017-01-16T20:24:56.278","id":"sidaw","log":"(:accept \"remove has color red\" \"(: remove (color red))\")"}
{"time":"2017-01-16T20:24:57.878","id":"sidaw","log":"(:def_ret \"remove red\" \"[[\\\"remove has color red\\\",\\\"(: remove (color red))\\\"]]\")"}
{"time":"2017-01-16T20:25:02.374","id":"sidaw","log":"(:context [[0,-1,0,\\\"Fake\\\",[\\\"S\\\"]],[0,-1,1,\\\"Fake\\\",[\\\"S\\\"]],[0,-1,2,\\\"Fake\\\",[\\\"S\\\"]],[0,-1,3,\\\"Fake\\\",[\\\"S\\\"]],[0,3,5,\\\"Fake\\\",[\\\"S\\\"]],[0,2,5,\\\"Fake\\\",[\\\"S\\\"]],[0,1,5,\\\"Fake\\\",[\\\"S\\\"]],[0,0,5,\\\"Fake\\\",[\\\"S\\\"]],[0,-1,5,\\\"Fake\\\",[\\\"S\\\"]],[0,-2,6,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:25:02.382","id":"sidaw","log":"(:q \"select none\")"}
{"time":"2017-01-16T20:25:03.227","id":"sidaw","log":"(:accept \"select none\" \"(: select nothing)\")"}
{"time":"2017-01-16T20:25:05.653","id":"sidaw","log":"(:context [])"}
{"time":"2017-01-16T20:25:05.667","id":"sidaw","log":"(:q \"select origin\")"}
{"time":"2017-01-16T20:25:06.102","id":"sidaw","log":"(:accept \"select origin\" \"(: select (call origin))\")"}
{"time":"2017-01-16T20:25:17.839","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:25:17.862","id":"sidaw","log":"(:q \"yellow sq size 3\")"}
{"time":"2017-01-16T20:25:26.022","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:25:26.040","id":"sidaw","log":"(:q \"yellow beam back 3\")"}
{"time":"2017-01-16T20:25:36.996","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:25:37.018","id":"sidaw","log":"(:q \"repeat 3 [yellow beam back 3; select left]\")"}
{"time":"2017-01-16T20:25:38.275","id":"sidaw","log":"(:accept \"repeat 3 [yellow beam back 3; select left]\" \"(:loop (number 3) (:s (:blk (:loop (number 3) (:s (: add yellow here) (: select (call adj back))))) (: select (call adj left))))\")"}
{"time":"2017-01-16T20:25:45.362","id":"sidaw","log":"(:context [[2,2,0,\\\"Yellow\\\",[]],[2,1,0,\\\"Yellow\\\",[]],[2,0,0,\\\"Yellow\\\",[]],[1,2,0,\\\"Yellow\\\",[]],[1,1,0,\\\"Yellow\\\",[]],[1,0,0,\\\"Yellow\\\",[]],[0,3,0,\\\"Fake\\\",[\\\"S\\\"]],[0,2,0,\\\"Yellow\\\",[]],[0,1,0,\\\"Yellow\\\",[]],[0,0,0,\\\"Yellow\\\",[]]])"}
{"time":"2017-01-16T20:25:45.384","id":"sidaw","log":"(:q \"select front\")"}
{"time":"2017-01-16T20:25:45.849","id":"sidaw","log":"(:accept \"select front\" \"(: select (call adj front))\")"}
{"time":"2017-01-16T20:25:47.057","id":"sidaw","log":"(:def \"yellow sq size 3\" \"[[\\\"repeat 3 [yellow beam back 3; select left]\\\",\\\"(:loop (number 3) (:s (:blk (:loop (number 3) (:s (: add yellow here) (: select (call adj back))))) (: select (call adj left))))\\\"],[\\\"select front\\\",\\\"(: select (call adj front))\\\"]]\")"}
{"time":"2017-01-16T20:25:52.227","id":"sidaw","log":"(:context [[2,2,0,\\\"Yellow\\\",[]],[2,1,0,\\\"Yellow\\\",[]],[2,0,0,\\\"Yellow\\\",[]],[1,2,0,\\\"Yellow\\\",[]],[1,1,0,\\\"Yellow\\\",[]],[1,0,0,\\\"Yellow\\\",[]],[0,2,0,\\\"Yellow\\\",[]],[0,1,0,\\\"Yellow\\\",[]],[0,0,0,\\\"Yellow\\\",[]],[-1,3,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:25:52.239","id":"sidaw","log":"(:q \"yellow sq size 3\")"}
{"time":"2017-01-16T20:25:52.884","id":"sidaw","log":"(:accept \"yellow sq size 3\" \"(:blk (:loop (number 3) (:s (:blk (:loop (number 3) (:s (: add yellow here) (: select (call adj back))))) (: select (call adj left)))) (: select (call adj front)))\")"}
{"time":"2017-01-16T20:25:56.491","id":"sidaw","log":"(:context [[2,2,0,\\\"Yellow\\\",[]],[2,1,0,\\\"Yellow\\\",[]],[2,0,0,\\\"Yellow\\\",[]],[1,5,0,\\\"Yellow\\\",[]],[1,4,0,\\\"Yellow\\\",[]],[1,3,0,\\\"Yellow\\\",[]],[1,2,0,\\\"Yellow\\\",[]],[1,1,0,\\\"Yellow\\\",[]],[1,0,0,\\\"Yellow\\\",[]],[0,5,0,\\\"Yellow\\\",[]],[0,4,0,\\\"Yellow\\\",[]],[0,3,0,\\\"Yellow\\\",[]],[0,2,0,\\\"Yellow\\\",[]],[0,1,0,\\\"Yellow\\\",[]],[0,0,0,\\\"Yellow\\\",[]],[-1,5,0,\\\"Yellow\\\",[]],[-1,4,0,\\\"Yellow\\\",[]],[-1,3,0,\\\"Yellow\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:25:56.509","id":"sidaw","log":"(:q \"select origin\")"}
{"time":"2017-01-16T20:25:56.975","id":"sidaw","log":"(:accept \"select origin\" \"(: select (call origin))\")"}
{"time":"2017-01-16T20:26:00.158","id":"sidaw","log":"(:context [[2,2,0,\\\"Yellow\\\",[]],[2,1,0,\\\"Yellow\\\",[]],[2,0,0,\\\"Yellow\\\",[]],[1,5,0,\\\"Yellow\\\",[]],[1,4,0,\\\"Yellow\\\",[]],[1,3,0,\\\"Yellow\\\",[]],[1,2,0,\\\"Yellow\\\",[]],[1,1,0,\\\"Yellow\\\",[]],[1,0,0,\\\"Yellow\\\",[]],[0,5,0,\\\"Yellow\\\",[]],[0,4,0,\\\"Yellow\\\",[]],[0,3,0,\\\"Yellow\\\",[]],[0,2,0,\\\"Yellow\\\",[]],[0,1,0,\\\"Yellow\\\",[]],[0,0,0,\\\"Yellow\\\",[\\\"S\\\"]],[-1,5,0,\\\"Yellow\\\",[]],[-1,4,0,\\\"Yellow\\\",[]],[-1,3,0,\\\"Yellow\\\",[]]])"}
{"time":"2017-01-16T20:26:00.171","id":"sidaw","log":"(:q \"red sq size 4\")"}
{"time":"2017-01-16T20:26:00.643","id":"sidaw","log":"(:accept \"red sq size 4\" \"(:blk (:loop (number 4) (:s (:blk (:loop (number 4) (:s (: add red here) (: select (call adj back))))) (: select (call adj left)))) (: select (call adj front)))\")"}
{"time":"2017-01-16T20:26:05.177","id":"sidaw","log":"(:context [[3,3,0,\\\"Red\\\",[]],[3,2,0,\\\"Red\\\",[]],[3,1,0,\\\"Red\\\",[]],[3,0,0,\\\"Red\\\",[]],[2,3,0,\\\"Red\\\",[]],[2,2,0,\\\"Red\\\",[]],[2,1,0,\\\"Red\\\",[]],[2,0,0,\\\"Red\\\",[]],[1,5,0,\\\"Yellow\\\",[]],[1,4,0,\\\"Yellow\\\",[]],[1,3,0,\\\"Red\\\",[]],[1,2,0,\\\"Red\\\",[]],[1,1,0,\\\"Red\\\",[]],[1,0,0,\\\"Red\\\",[]],[0,5,0,\\\"Yellow\\\",[]],[0,4,0,\\\"Yellow\\\",[]],[0,3,0,\\\"Red\\\",[]],[0,2,0,\\\"Red\\\",[]],[0,1,0,\\\"Red\\\",[]],[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[-1,5,0,\\\"Yellow\\\",[]],[-1,4,0,\\\"Yellow\\\",[]],[-1,3,0,\\\"Yellow\\\",[]]])"}
{"time":"2017-01-16T20:26:05.185","id":"sidaw","log":"(:q \"red cube size 4\")"}
{"time":"2017-01-16T20:26:16.123","id":"sidaw","log":"(:context [[3,3,0,\\\"Red\\\",[]],[3,2,0,\\\"Red\\\",[]],[3,1,0,\\\"Red\\\",[]],[3,0,0,\\\"Red\\\",[]],[2,3,0,\\\"Red\\\",[]],[2,2,0,\\\"Red\\\",[]],[2,1,0,\\\"Red\\\",[]],[2,0,0,\\\"Red\\\",[]],[1,5,0,\\\"Yellow\\\",[]],[1,4,0,\\\"Yellow\\\",[]],[1,3,0,\\\"Red\\\",[]],[1,2,0,\\\"Red\\\",[]],[1,1,0,\\\"Red\\\",[]],[1,0,0,\\\"Red\\\",[]],[0,5,0,\\\"Yellow\\\",[]],[0,4,0,\\\"Yellow\\\",[]],[0,3,0,\\\"Red\\\",[]],[0,2,0,\\\"Red\\\",[]],[0,1,0,\\\"Red\\\",[]],[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[-1,5,0,\\\"Yellow\\\",[]],[-1,4,0,\\\"Yellow\\\",[]],[-1,3,0,\\\"Yellow\\\",[]]])"}
{"time":"2017-01-16T20:26:16.131","id":"sidaw","log":"(:q \"red sq size 4\")"}
{"time":"2017-01-16T20:26:17.563","id":"sidaw","log":"(:accept \"red sq size 4\" \"(:blk (:loop (number 4) (:s (:blk (:loop (number 4) (:s (: add red here) (: select (call adj back))))) (: select (call adj left)))) (: select (call adj front)))\")"}
{"time":"2017-01-16T20:26:28.045","id":"sidaw","log":"(:context [[3,3,0,\\\"Red\\\",[]],[3,2,0,\\\"Red\\\",[]],[3,1,0,\\\"Red\\\",[]],[3,0,0,\\\"Red\\\",[]],[2,3,0,\\\"Red\\\",[]],[2,2,0,\\\"Red\\\",[]],[2,1,0,\\\"Red\\\",[]],[2,0,0,\\\"Red\\\",[]],[1,5,0,\\\"Yellow\\\",[]],[1,4,0,\\\"Yellow\\\",[]],[1,3,0,\\\"Red\\\",[]],[1,2,0,\\\"Red\\\",[]],[1,1,0,\\\"Red\\\",[]],[1,0,0,\\\"Red\\\",[]],[0,5,0,\\\"Yellow\\\",[]],[0,4,0,\\\"Yellow\\\",[]],[0,3,0,\\\"Red\\\",[]],[0,2,0,\\\"Red\\\",[]],[0,1,0,\\\"Red\\\",[]],[0,0,0,\\\"Red\\\",[\\\"S\\\"]],[-1,5,0,\\\"Yellow\\\",[]],[-1,4,0,\\\"Yellow\\\",[]],[-1,3,0,\\\"Yellow\\\",[]]])"}
{"time":"2017-01-16T20:26:28.058","id":"sidaw","log":"(:q \"repeat 4-1 [select top; red sq size 4]\")"}
{"time":"2017-01-16T20:26:29.394","id":"sidaw","log":"(:accept \"repeat 4-1 [select top; red sq size 4]\" \"(:loop (- (number 4) (number 1)) (:s (: select (call adj top)) (:blk (:loop (number 4) (:s (:blk (:loop (number 4) (:s (: add red here) (: select (call adj back))))) (: select (call adj left)))) (: select (call adj front)))))\")"}
{"time":"2017-01-16T20:26:31.841","id":"sidaw","log":"(:def \"red cube size 4\" \"[[\\\"red sq size 4\\\",\\\"(:blk (:loop (number 4) (:s (:blk (:loop (number 4) (:s (: add red here) (: select (call adj back))))) (: select (call adj left)))) (: select (call adj front)))\\\"],[\\\"repeat 4-1 [select top; red sq size 4]\\\",\\\"(:loop (- (number 4) (number 1)) (:s (: select (call adj top)) (:blk (:loop (number 4) (:s (:blk (:loop (number 4) (:s (: add red here) (: select (call adj back))))) (: select (call adj left)))) (: select (call adj front)))))\\\"]]\")"}
{"time":"2017-01-16T20:26:37.066","id":"sidaw","log":"(:context [[3,3,0,\\\"Red\\\",[]],[3,2,0,\\\"Red\\\",[]],[3,1,0,\\\"Red\\\",[]],[3,0,0,\\\"Red\\\",[]],[2,3,0,\\\"Red\\\",[]],[2,2,0,\\\"Red\\\",[]],[2,1,0,\\\"Red\\\",[]],[2,0,0,\\\"Red\\\",[]],[1,5,0,\\\"Yellow\\\",[]],[1,4,0,\\\"Yellow\\\",[]],[1,3,0,\\\"Red\\\",[]],[1,2,0,\\\"Red\\\",[]],[1,1,0,\\\"Red\\\",[]],[1,0,0,\\\"Red\\\",[]],[0,5,0,\\\"Yellow\\\",[]],[0,4,0,\\\"Yellow\\\",[]],[0,3,0,\\\"Red\\\",[]],[0,2,0,\\\"Red\\\",[]],[0,1,0,\\\"Red\\\",[]],[0,0,0,\\\"Red\\\",[]],[-1,5,0,\\\"Yellow\\\",[]],[-1,4,0,\\\"Yellow\\\",[]],[-1,3,0,\\\"Yellow\\\",[]],[3,3,1,\\\"Red\\\",[]],[3,2,1,\\\"Red\\\",[]],[3,1,1,\\\"Red\\\",[]],[3,0,1,\\\"Red\\\",[]],[2,3,1,\\\"Red\\\",[]],[2,2,1,\\\"Red\\\",[]],[2,1,1,\\\"Red\\\",[]],[2,0,1,\\\"Red\\\",[]],[1,3,1,\\\"Red\\\",[]],[1,2,1,\\\"Red\\\",[]],[1,1,1,\\\"Red\\\",[]],[1,0,1,\\\"Red\\\",[]],[0,3,1,\\\"Red\\\",[]],[0,2,1,\\\"Red\\\",[]],[0,1,1,\\\"Red\\\",[]],[0,0,1,\\\"Red\\\",[]],[3,3,2,\\\"Red\\\",[]],[3,2,2,\\\"Red\\\",[]],[3,1,2,\\\"Red\\\",[]],[3,0,2,\\\"Red\\\",[]],[2,3,2,\\\"Red\\\",[]],[2,2,2,\\\"Red\\\",[]],[2,1,2,\\\"Red\\\",[]],[2,0,2,\\\"Red\\\",[]],[1,3,2,\\\"Red\\\",[]],[1,2,2,\\\"Red\\\",[]],[1,1,2,\\\"Red\\\",[]],[1,0,2,\\\"Red\\\",[]],[0,3,2,\\\"Red\\\",[]],[0,2,2,\\\"Red\\\",[]],[0,1,2,\\\"Red\\\",[]],[0,0,2,\\\"Red\\\",[]],[3,3,3,\\\"Red\\\",[]],[3,2,3,\\\"Red\\\",[]],[3,1,3,\\\"Red\\\",[]],[3,0,3,\\\"Red\\\",[]],[2,3,3,\\\"Red\\\",[]],[2,2,3,\\\"Red\\\",[]],[2,1,3,\\\"Red\\\",[]],[2,0,3,\\\"Red\\\",[]],[1,3,3,\\\"Red\\\",[]],[1,2,3,\\\"Red\\\",[]],[1,1,3,\\\"Red\\\",[]],[1,0,3,\\\"Red\\\",[]],[0,3,3,\\\"Red\\\",[]],[0,2,3,\\\"Red\\\",[]],[0,1,3,\\\"Red\\\",[]],[0,0,3,\\\"Red\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:26:37.075","id":"sidaw","log":"(:q \"brown cube size 4\")"}
{"time":"2017-01-16T20:26:38.813","id":"sidaw","log":"(:context [[3,3,0,\\\"Red\\\",[]],[3,2,0,\\\"Red\\\",[]],[3,1,0,\\\"Red\\\",[]],[3,0,0,\\\"Red\\\",[]],[2,3,0,\\\"Red\\\",[]],[2,2,0,\\\"Red\\\",[]],[2,1,0,\\\"Red\\\",[]],[2,0,0,\\\"Red\\\",[]],[1,5,0,\\\"Yellow\\\",[]],[1,4,0,\\\"Yellow\\\",[]],[1,3,0,\\\"Red\\\",[]],[1,2,0,\\\"Red\\\",[]],[1,1,0,\\\"Red\\\",[]],[1,0,0,\\\"Red\\\",[]],[0,5,0,\\\"Yellow\\\",[]],[0,4,0,\\\"Yellow\\\",[]],[0,3,0,\\\"Red\\\",[]],[0,2,0,\\\"Red\\\",[]],[0,1,0,\\\"Red\\\",[]],[0,0,0,\\\"Red\\\",[]],[-1,5,0,\\\"Yellow\\\",[]],[-1,4,0,\\\"Yellow\\\",[]],[-1,3,0,\\\"Yellow\\\",[]],[3,3,1,\\\"Red\\\",[]],[3,2,1,\\\"Red\\\",[]],[3,1,1,\\\"Red\\\",[]],[3,0,1,\\\"Red\\\",[]],[2,3,1,\\\"Red\\\",[]],[2,2,1,\\\"Red\\\",[]],[2,1,1,\\\"Red\\\",[]],[2,0,1,\\\"Red\\\",[]],[1,3,1,\\\"Red\\\",[]],[1,2,1,\\\"Red\\\",[]],[1,1,1,\\\"Red\\\",[]],[1,0,1,\\\"Red\\\",[]],[0,3,1,\\\"Red\\\",[]],[0,2,1,\\\"Red\\\",[]],[0,1,1,\\\"Red\\\",[]],[0,0,1,\\\"Red\\\",[]],[3,3,2,\\\"Red\\\",[]],[3,2,2,\\\"Red\\\",[]],[3,1,2,\\\"Red\\\",[]],[3,0,2,\\\"Red\\\",[]],[2,3,2,\\\"Red\\\",[]],[2,2,2,\\\"Red\\\",[]],[2,1,2,\\\"Red\\\",[]],[2,0,2,\\\"Red\\\",[]],[1,3,2,\\\"Red\\\",[]],[1,2,2,\\\"Red\\\",[]],[1,1,2,\\\"Red\\\",[]],[1,0,2,\\\"Red\\\",[]],[0,3,2,\\\"Red\\\",[]],[0,2,2,\\\"Red\\\",[]],[0,1,2,\\\"Red\\\",[]],[0,0,2,\\\"Red\\\",[]],[3,3,3,\\\"Red\\\",[]],[3,2,3,\\\"Red\\\",[]],[3,1,3,\\\"Red\\\",[]],[3,0,3,\\\"Red\\\",[]],[2,3,3,\\\"Red\\\",[]],[2,2,3,\\\"Red\\\",[]],[2,1,3,\\\"Red\\\",[]],[2,0,3,\\\"Red\\\",[]],[1,3,3,\\\"Red\\\",[]],[1,2,3,\\\"Red\\\",[]],[1,1,3,\\\"Red\\\",[]],[1,0,3,\\\"Red\\\",[]],[0,3,3,\\\"Red\\\",[]],[0,2,3,\\\"Red\\\",[]],[0,1,3,\\\"Red\\\",[]],[0,0,3,\\\"Red\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:26:38.826","id":"sidaw","log":"(:q \"brown cube size 5\")"}
{"time":"2017-01-16T20:26:51.672","id":"sidaw","log":"(:context [[3,3,0,\\\"Red\\\",[]],[3,2,0,\\\"Red\\\",[]],[3,1,0,\\\"Red\\\",[]],[3,0,0,\\\"Red\\\",[]],[2,3,0,\\\"Red\\\",[]],[2,2,0,\\\"Red\\\",[]],[2,1,0,\\\"Red\\\",[]],[2,0,0,\\\"Red\\\",[]],[1,5,0,\\\"Yellow\\\",[]],[1,4,0,\\\"Yellow\\\",[]],[1,3,0,\\\"Red\\\",[]],[1,2,0,\\\"Red\\\",[]],[1,1,0,\\\"Red\\\",[]],[1,0,0,\\\"Red\\\",[]],[0,5,0,\\\"Yellow\\\",[]],[0,4,0,\\\"Yellow\\\",[]],[0,3,0,\\\"Red\\\",[]],[0,2,0,\\\"Red\\\",[]],[0,1,0,\\\"Red\\\",[]],[0,0,0,\\\"Red\\\",[]],[-1,5,0,\\\"Yellow\\\",[]],[-1,4,0,\\\"Yellow\\\",[]],[-1,3,0,\\\"Yellow\\\",[]],[3,3,1,\\\"Red\\\",[]],[3,2,1,\\\"Red\\\",[]],[3,1,1,\\\"Red\\\",[]],[3,0,1,\\\"Red\\\",[]],[2,3,1,\\\"Red\\\",[]],[2,2,1,\\\"Red\\\",[]],[2,1,1,\\\"Red\\\",[]],[2,0,1,\\\"Red\\\",[]],[1,3,1,\\\"Red\\\",[]],[1,2,1,\\\"Red\\\",[]],[1,1,1,\\\"Red\\\",[]],[1,0,1,\\\"Red\\\",[]],[0,3,1,\\\"Red\\\",[]],[0,2,1,\\\"Red\\\",[]],[0,1,1,\\\"Red\\\",[]],[0,0,1,\\\"Red\\\",[]],[3,3,2,\\\"Red\\\",[]],[3,2,2,\\\"Red\\\",[]],[3,1,2,\\\"Red\\\",[]],[3,0,2,\\\"Red\\\",[]],[2,3,2,\\\"Red\\\",[]],[2,2,2,\\\"Red\\\",[]],[2,1,2,\\\"Red\\\",[]],[2,0,2,\\\"Red\\\",[]],[1,3,2,\\\"Red\\\",[]],[1,2,2,\\\"Red\\\",[]],[1,1,2,\\\"Red\\\",[]],[1,0,2,\\\"Red\\\",[]],[0,3,2,\\\"Red\\\",[]],[0,2,2,\\\"Red\\\",[]],[0,1,2,\\\"Red\\\",[]],[0,0,2,\\\"Red\\\",[]],[3,3,3,\\\"Red\\\",[]],[3,2,3,\\\"Red\\\",[]],[3,1,3,\\\"Red\\\",[]],[3,0,3,\\\"Red\\\",[]],[2,3,3,\\\"Red\\\",[]],[2,2,3,\\\"Red\\\",[]],[2,1,3,\\\"Red\\\",[]],[2,0,3,\\\"Red\\\",[]],[1,3,3,\\\"Red\\\",[]],[1,2,3,\\\"Red\\\",[]],[1,1,3,\\\"Red\\\",[]],[1,0,3,\\\"Red\\\",[]],[0,3,3,\\\"Red\\\",[]],[0,2,3,\\\"Red\\\",[]],[0,1,3,\\\"Red\\\",[]],[0,0,3,\\\"Red\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:26:51.685","id":"sidaw","log":"(:q \"move back\")"}
{"time":"2017-01-16T20:26:58.249","id":"sidaw","log":"(:accept \"move back\" \"(: move back)\")"}
{"time":"2017-01-16T20:27:16.419","id":"sidaw","log":"(:context [[3,3,0,\\\"Red\\\",[]],[3,2,0,\\\"Red\\\",[]],[3,1,0,\\\"Red\\\",[]],[3,0,0,\\\"Red\\\",[]],[2,3,0,\\\"Red\\\",[]],[2,2,0,\\\"Red\\\",[]],[2,1,0,\\\"Red\\\",[]],[2,0,0,\\\"Red\\\",[]],[1,5,0,\\\"Yellow\\\",[]],[1,4,0,\\\"Yellow\\\",[]],[1,3,0,\\\"Red\\\",[]],[1,2,0,\\\"Red\\\",[]],[1,1,0,\\\"Red\\\",[]],[1,0,0,\\\"Red\\\",[]],[0,5,0,\\\"Yellow\\\",[]],[0,4,0,\\\"Yellow\\\",[]],[0,3,0,\\\"Red\\\",[]],[0,2,0,\\\"Red\\\",[]],[0,1,0,\\\"Red\\\",[]],[0,0,0,\\\"Red\\\",[]],[-1,5,0,\\\"Yellow\\\",[]],[-1,4,0,\\\"Yellow\\\",[]],[-1,3,0,\\\"Yellow\\\",[]],[3,3,1,\\\"Red\\\",[]],[3,2,1,\\\"Red\\\",[]],[3,1,1,\\\"Red\\\",[]],[3,0,1,\\\"Red\\\",[]],[2,3,1,\\\"Red\\\",[]],[2,2,1,\\\"Red\\\",[]],[2,1,1,\\\"Red\\\",[]],[2,0,1,\\\"Red\\\",[]],[1,3,1,\\\"Red\\\",[]],[1,2,1,\\\"Red\\\",[]],[1,1,1,\\\"Red\\\",[]],[1,0,1,\\\"Red\\\",[]],[0,3,1,\\\"Red\\\",[]],[0,2,1,\\\"Red\\\",[]],[0,1,1,\\\"Red\\\",[]],[0,0,1,\\\"Red\\\",[]],[3,3,2,\\\"Red\\\",[]],[3,2,2,\\\"Red\\\",[]],[3,1,2,\\\"Red\\\",[]],[3,0,2,\\\"Red\\\",[]],[2,3,2,\\\"Red\\\",[]],[2,2,2,\\\"Red\\\",[]],[2,1,2,\\\"Red\\\",[]],[2,0,2,\\\"Red\\\",[]],[1,3,2,\\\"Red\\\",[]],[1,2,2,\\\"Red\\\",[]],[1,1,2,\\\"Red\\\",[]],[1,0,2,\\\"Red\\\",[]],[0,3,2,\\\"Red\\\",[]],[0,2,2,\\\"Red\\\",[]],[0,1,2,\\\"Red\\\",[]],[0,0,2,\\\"Red\\\",[]],[3,3,3,\\\"Red\\\",[]],[3,2,3,\\\"Red\\\",[]],[3,1,3,\\\"Red\\\",[]],[3,0,3,\\\"Red\\\",[]],[2,3,3,\\\"Red\\\",[]],[2,2,3,\\\"Red\\\",[]],[2,1,3,\\\"Red\\\",[]],[2,0,3,\\\"Red\\\",[]],[1,3,3,\\\"Red\\\",[]],[1,2,3,\\\"Red\\\",[]],[1,1,3,\\\"Red\\\",[]],[1,0,3,\\\"Red\\\",[\\\"S\\\"]],[0,3,3,\\\"Red\\\",[]],[0,2,3,\\\"Red\\\",[]],[0,1,3,\\\"Red\\\",[]]])"}
{"time":"2017-01-16T20:27:16.442","id":"sidaw","log":"(:q \"select very back of very top of red\")"}
{"time":"2017-01-16T20:27:24.064","id":"sidaw","log":"(:context [[3,3,0,\\\"Red\\\",[]],[3,2,0,\\\"Red\\\",[]],[3,1,0,\\\"Red\\\",[]],[3,0,0,\\\"Red\\\",[]],[2,3,0,\\\"Red\\\",[]],[2,2,0,\\\"Red\\\",[]],[2,1,0,\\\"Red\\\",[]],[2,0,0,\\\"Red\\\",[]],[1,5,0,\\\"Yellow\\\",[]],[1,4,0,\\\"Yellow\\\",[]],[1,3,0,\\\"Red\\\",[]],[1,2,0,\\\"Red\\\",[]],[1,1,0,\\\"Red\\\",[]],[1,0,0,\\\"Red\\\",[]],[0,5,0,\\\"Yellow\\\",[]],[0,4,0,\\\"Yellow\\\",[]],[0,3,0,\\\"Red\\\",[]],[0,2,0,\\\"Red\\\",[]],[0,1,0,\\\"Red\\\",[]],[0,0,0,\\\"Red\\\",[]],[-1,5,0,\\\"Yellow\\\",[]],[-1,4,0,\\\"Yellow\\\",[]],[-1,3,0,\\\"Yellow\\\",[]],[3,3,1,\\\"Red\\\",[]],[3,2,1,\\\"Red\\\",[]],[3,1,1,\\\"Red\\\",[]],[3,0,1,\\\"Red\\\",[]],[2,3,1,\\\"Red\\\",[]],[2,2,1,\\\"Red\\\",[]],[2,1,1,\\\"Red\\\",[]],[2,0,1,\\\"Red\\\",[]],[1,3,1,\\\"Red\\\",[]],[1,2,1,\\\"Red\\\",[]],[1,1,1,\\\"Red\\\",[]],[1,0,1,\\\"Red\\\",[]],[0,3,1,\\\"Red\\\",[]],[0,2,1,\\\"Red\\\",[]],[0,1,1,\\\"Red\\\",[]],[0,0,1,\\\"Red\\\",[]],[3,3,2,\\\"Red\\\",[]],[3,2,2,\\\"Red\\\",[]],[3,1,2,\\\"Red\\\",[]],[3,0,2,\\\"Red\\\",[]],[2,3,2,\\\"Red\\\",[]],[2,2,2,\\\"Red\\\",[]],[2,1,2,\\\"Red\\\",[]],[2,0,2,\\\"Red\\\",[]],[1,3,2,\\\"Red\\\",[]],[1,2,2,\\\"Red\\\",[]],[1,1,2,\\\"Red\\\",[]],[1,0,2,\\\"Red\\\",[]],[0,3,2,\\\"Red\\\",[]],[0,2,2,\\\"Red\\\",[]],[0,1,2,\\\"Red\\\",[]],[0,0,2,\\\"Red\\\",[]],[3,3,3,\\\"Red\\\",[]],[3,2,3,\\\"Red\\\",[]],[3,1,3,\\\"Red\\\",[]],[3,0,3,\\\"Red\\\",[]],[2,3,3,\\\"Red\\\",[]],[2,2,3,\\\"Red\\\",[]],[2,1,3,\\\"Red\\\",[]],[2,0,3,\\\"Red\\\",[]],[1,3,3,\\\"Red\\\",[]],[1,2,3,\\\"Red\\\",[]],[1,1,3,\\\"Red\\\",[]],[1,0,3,\\\"Red\\\",[\\\"S\\\"]],[0,3,3,\\\"Red\\\",[]],[0,2,3,\\\"Red\\\",[]],[0,1,3,\\\"Red\\\",[]]])"}
{"time":"2017-01-16T20:27:24.088","id":"sidaw","log":"(:q \"select very back of very top of has color red\")"}
{"time":"2017-01-16T20:27:24.927","id":"sidaw","log":"(:accept \"select very back of very top of has color red\" \"(: select (call veryx back (call veryx top (color red))))\")"}
{"time":"2017-01-16T20:27:30.189","id":"sidaw","log":"(:context [[3,3,0,\\\"Red\\\",[]],[3,2,0,\\\"Red\\\",[]],[3,1,0,\\\"Red\\\",[]],[3,0,0,\\\"Red\\\",[]],[2,3,0,\\\"Red\\\",[]],[2,2,0,\\\"Red\\\",[]],[2,1,0,\\\"Red\\\",[]],[2,0,0,\\\"Red\\\",[]],[1,5,0,\\\"Yellow\\\",[]],[1,4,0,\\\"Yellow\\\",[]],[1,3,0,\\\"Red\\\",[]],[1,2,0,\\\"Red\\\",[]],[1,1,0,\\\"Red\\\",[]],[1,0,0,\\\"Red\\\",[]],[0,5,0,\\\"Yellow\\\",[]],[0,4,0,\\\"Yellow\\\",[]],[0,3,0,\\\"Red\\\",[]],[0,2,0,\\\"Red\\\",[]],[0,1,0,\\\"Red\\\",[]],[0,0,0,\\\"Red\\\",[]],[-1,5,0,\\\"Yellow\\\",[]],[-1,4,0,\\\"Yellow\\\",[]],[-1,3,0,\\\"Yellow\\\",[]],[3,3,1,\\\"Red\\\",[]],[3,2,1,\\\"Red\\\",[]],[3,1,1,\\\"Red\\\",[]],[3,0,1,\\\"Red\\\",[]],[2,3,1,\\\"Red\\\",[]],[2,2,1,\\\"Red\\\",[]],[2,1,1,\\\"Red\\\",[]],[2,0,1,\\\"Red\\\",[]],[1,3,1,\\\"Red\\\",[]],[1,2,1,\\\"Red\\\",[]],[1,1,1,\\\"Red\\\",[]],[1,0,1,\\\"Red\\\",[]],[0,3,1,\\\"Red\\\",[]],[0,2,1,\\\"Red\\\",[]],[0,1,1,\\\"Red\\\",[]],[0,0,1,\\\"Red\\\",[]],[3,3,2,\\\"Red\\\",[]],[3,2,2,\\\"Red\\\",[]],[3,1,2,\\\"Red\\\",[]],[3,0,2,\\\"Red\\\",[]],[2,3,2,\\\"Red\\\",[]],[2,2,2,\\\"Red\\\",[]],[2,1,2,\\\"Red\\\",[]],[2,0,2,\\\"Red\\\",[]],[1,3,2,\\\"Red\\\",[]],[1,2,2,\\\"Red\\\",[]],[1,1,2,\\\"Red\\\",[]],[1,0,2,\\\"Red\\\",[]],[0,3,2,\\\"Red\\\",[]],[0,2,2,\\\"Red\\\",[]],[0,1,2,\\\"Red\\\",[]],[0,0,2,\\\"Red\\\",[]],[3,3,3,\\\"Red\\\",[\\\"S\\\"]],[3,2,3,\\\"Red\\\",[\\\"S\\\"]],[3,1,3,\\\"Red\\\",[\\\"S\\\"]],[3,0,3,\\\"Red\\\",[\\\"S\\\"]],[2,3,3,\\\"Red\\\",[]],[2,2,3,\\\"Red\\\",[]],[2,1,3,\\\"Red\\\",[]],[2,0,3,\\\"Red\\\",[]],[1,3,3,\\\"Red\\\",[]],[1,2,3,\\\"Red\\\",[]],[1,1,3,\\\"Red\\\",[]],[1,0,3,\\\"Red\\\",[]],[0,3,3,\\\"Red\\\",[]],[0,2,3,\\\"Red\\\",[]],[0,1,3,\\\"Red\\\",[]]])"}
{"time":"2017-01-16T20:27:30.212","id":"sidaw","log":"(:q \"add blue top\")"}
{"time":"2017-01-16T20:27:30.799","id":"sidaw","log":"(:accept \"add blue top\" \"(: add blue top)\")"}
{"time":"2017-01-16T20:27:37.070","id":"sidaw","log":"(:context [[3,3,0,\\\"Red\\\",[]],[3,2,0,\\\"Red\\\",[]],[3,1,0,\\\"Red\\\",[]],[3,0,0,\\\"Red\\\",[]],[2,3,0,\\\"Red\\\",[]],[2,2,0,\\\"Red\\\",[]],[2,1,0,\\\"Red\\\",[]],[2,0,0,\\\"Red\\\",[]],[1,5,0,\\\"Yellow\\\",[]],[1,4,0,\\\"Yellow\\\",[]],[1,3,0,\\\"Red\\\",[]],[1,2,0,\\\"Red\\\",[]],[1,1,0,\\\"Red\\\",[]],[1,0,0,\\\"Red\\\",[]],[0,5,0,\\\"Yellow\\\",[]],[0,4,0,\\\"Yellow\\\",[]],[0,3,0,\\\"Red\\\",[]],[0,2,0,\\\"Red\\\",[]],[0,1,0,\\\"Red\\\",[]],[0,0,0,\\\"Red\\\",[]],[-1,5,0,\\\"Yellow\\\",[]],[-1,4,0,\\\"Yellow\\\",[]],[-1,3,0,\\\"Yellow\\\",[]],[3,3,1,\\\"Red\\\",[]],[3,2,1,\\\"Red\\\",[]],[3,1,1,\\\"Red\\\",[]],[3,0,1,\\\"Red\\\",[]],[2,3,1,\\\"Red\\\",[]],[2,2,1,\\\"Red\\\",[]],[2,1,1,\\\"Red\\\",[]],[2,0,1,\\\"Red\\\",[]],[1,3,1,\\\"Red\\\",[]],[1,2,1,\\\"Red\\\",[]],[1,1,1,\\\"Red\\\",[]],[1,0,1,\\\"Red\\\",[]],[0,3,1,\\\"Red\\\",[]],[0,2,1,\\\"Red\\\",[]],[0,1,1,\\\"Red\\\",[]],[0,0,1,\\\"Red\\\",[]],[3,3,2,\\\"Red\\\",[]],[3,2,2,\\\"Red\\\",[]],[3,1,2,\\\"Red\\\",[]],[3,0,2,\\\"Red\\\",[]],[2,3,2,\\\"Red\\\",[]],[2,2,2,\\\"Red\\\",[]],[2,1,2,\\\"Red\\\",[]],[2,0,2,\\\"Red\\\",[]],[1,3,2,\\\"Red\\\",[]],[1,2,2,\\\"Red\\\",[]],[1,1,2,\\\"Red\\\",[]],[1,0,2,\\\"Red\\\",[]],[0,3,2,\\\"Red\\\",[]],[0,2,2,\\\"Red\\\",[]],[0,1,2,\\\"Red\\\",[]],[0,0,2,\\\"Red\\\",[]],[3,3,3,\\\"Red\\\",[\\\"S\\\"]],[3,2,3,\\\"Red\\\",[\\\"S\\\"]],[3,1,3,\\\"Red\\\",[\\\"S\\\"]],[3,0,3,\\\"Red\\\",[\\\"S\\\"]],[2,3,3,\\\"Red\\\",[]],[2,2,3,\\\"Red\\\",[]],[2,1,3,\\\"Red\\\",[]],[2,0,3,\\\"Red\\\",[]],[1,3,3,\\\"Red\\\",[]],[1,2,3,\\\"Red\\\",[]],[1,1,3,\\\"Red\\\",[]],[1,0,3,\\\"Red\\\",[]],[0,3,3,\\\"Red\\\",[]],[0,2,3,\\\"Red\\\",[]],[0,1,3,\\\"Red\\\",[]],[3,3,4,\\\"Blue\\\",[]],[3,2,4,\\\"Blue\\\",[]],[3,1,4,\\\"Blue\\\",[]],[3,0,4,\\\"Blue\\\",[]]])"}
{"time":"2017-01-16T20:27:37.093","id":"sidaw","log":"(:q \"select blue\")"}
{"time":"2017-01-16T20:27:37.651","id":"sidaw","log":"(:accept \"select blue\" \"(: select (color blue))\")"}
{"time":"2017-01-16T20:28:01.561","id":"sidaw","log":"(:context [[3,3,0,\\\"Red\\\",[]],[3,2,0,\\\"Red\\\",[]],[3,1,0,\\\"Red\\\",[]],[3,0,0,\\\"Red\\\",[]],[2,3,0,\\\"Red\\\",[]],[2,2,0,\\\"Red\\\",[]],[2,1,0,\\\"Red\\\",[]],[2,0,0,\\\"Red\\\",[]],[1,5,0,\\\"Yellow\\\",[]],[1,4,0,\\\"Yellow\\\",[]],[1,3,0,\\\"Red\\\",[]],[1,2,0,\\\"Red\\\",[]],[1,1,0,\\\"Red\\\",[]],[1,0,0,\\\"Red\\\",[]],[0,5,0,\\\"Yellow\\\",[]],[0,4,0,\\\"Yellow\\\",[]],[0,3,0,\\\"Red\\\",[]],[0,2,0,\\\"Red\\\",[]],[0,1,0,\\\"Red\\\",[]],[0,0,0,\\\"Red\\\",[]],[-1,5,0,\\\"Yellow\\\",[]],[-1,4,0,\\\"Yellow\\\",[]],[-1,3,0,\\\"Yellow\\\",[]],[3,3,1,\\\"Red\\\",[]],[3,2,1,\\\"Red\\\",[]],[3,1,1,\\\"Red\\\",[]],[3,0,1,\\\"Red\\\",[]],[2,3,1,\\\"Red\\\",[]],[2,2,1,\\\"Red\\\",[]],[2,1,1,\\\"Red\\\",[]],[2,0,1,\\\"Red\\\",[]],[1,3,1,\\\"Red\\\",[]],[1,2,1,\\\"Red\\\",[]],[1,1,1,\\\"Red\\\",[]],[1,0,1,\\\"Red\\\",[]],[0,3,1,\\\"Red\\\",[]],[0,2,1,\\\"Red\\\",[]],[0,1,1,\\\"Red\\\",[]],[0,0,1,\\\"Red\\\",[]],[3,3,2,\\\"Red\\\",[]],[3,2,2,\\\"Red\\\",[]],[3,1,2,\\\"Red\\\",[]],[3,0,2,\\\"Red\\\",[]],[2,3,2,\\\"Red\\\",[]],[2,2,2,\\\"Red\\\",[]],[2,1,2,\\\"Red\\\",[]],[2,0,2,\\\"Red\\\",[]],[1,3,2,\\\"Red\\\",[]],[1,2,2,\\\"Red\\\",[]],[1,1,2,\\\"Red\\\",[]],[1,0,2,\\\"Red\\\",[]],[0,3,2,\\\"Red\\\",[]],[0,2,2,\\\"Red\\\",[]],[0,1,2,\\\"Red\\\",[]],[0,0,2,\\\"Red\\\",[]],[3,3,3,\\\"Red\\\",[]],[3,2,3,\\\"Red\\\",[]],[3,1,3,\\\"Red\\\",[]],[3,0,3,\\\"Red\\\",[]],[2,3,3,\\\"Red\\\",[]],[2,2,3,\\\"Red\\\",[]],[2,1,3,\\\"Red\\\",[]],[2,0,3,\\\"Red\\\",[]],[1,3,3,\\\"Red\\\",[]],[1,2,3,\\\"Red\\\",[]],[1,1,3,\\\"Red\\\",[]],[1,0,3,\\\"Red\\\",[]],[0,3,3,\\\"Red\\\",[]],[0,2,3,\\\"Red\\\",[]],[0,1,3,\\\"Red\\\",[]],[3,3,4,\\\"Blue\\\",[\\\"S\\\"]],[3,2,4,\\\"Blue\\\",[\\\"S\\\"]],[3,1,4,\\\"Blue\\\",[\\\"S\\\"]],[3,0,4,\\\"Blue\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:28:01.569","id":"sidaw","log":"(:q \"select this and not very left and not very right\")"}
{"time":"2017-01-16T20:28:03.554","id":"sidaw","log":"(:accept \"select this and not very left and not very right\" \"(: select (and (and this (not (call veryx left))) (not (call veryx right))))\")"}
{"time":"2017-01-16T20:28:06.983","id":"sidaw","log":"(:context [[3,3,0,\\\"Red\\\",[]],[3,2,0,\\\"Red\\\",[]],[3,1,0,\\\"Red\\\",[]],[3,0,0,\\\"Red\\\",[]],[2,3,0,\\\"Red\\\",[]],[2,2,0,\\\"Red\\\",[]],[2,1,0,\\\"Red\\\",[]],[2,0,0,\\\"Red\\\",[]],[1,5,0,\\\"Yellow\\\",[]],[1,4,0,\\\"Yellow\\\",[]],[1,3,0,\\\"Red\\\",[]],[1,2,0,\\\"Red\\\",[]],[1,1,0,\\\"Red\\\",[]],[1,0,0,\\\"Red\\\",[]],[0,5,0,\\\"Yellow\\\",[]],[0,4,0,\\\"Yellow\\\",[]],[0,3,0,\\\"Red\\\",[]],[0,2,0,\\\"Red\\\",[]],[0,1,0,\\\"Red\\\",[]],[0,0,0,\\\"Red\\\",[]],[-1,5,0,\\\"Yellow\\\",[]],[-1,4,0,\\\"Yellow\\\",[]],[-1,3,0,\\\"Yellow\\\",[]],[3,3,1,\\\"Red\\\",[]],[3,2,1,\\\"Red\\\",[]],[3,1,1,\\\"Red\\\",[]],[3,0,1,\\\"Red\\\",[]],[2,3,1,\\\"Red\\\",[]],[2,2,1,\\\"Red\\\",[]],[2,1,1,\\\"Red\\\",[]],[2,0,1,\\\"Red\\\",[]],[1,3,1,\\\"Red\\\",[]],[1,2,1,\\\"Red\\\",[]],[1,1,1,\\\"Red\\\",[]],[1,0,1,\\\"Red\\\",[]],[0,3,1,\\\"Red\\\",[]],[0,2,1,\\\"Red\\\",[]],[0,1,1,\\\"Red\\\",[]],[0,0,1,\\\"Red\\\",[]],[3,3,2,\\\"Red\\\",[]],[3,2,2,\\\"Red\\\",[]],[3,1,2,\\\"Red\\\",[]],[3,0,2,\\\"Red\\\",[]],[2,3,2,\\\"Red\\\",[]],[2,2,2,\\\"Red\\\",[]],[2,1,2,\\\"Red\\\",[]],[2,0,2,\\\"Red\\\",[]],[1,3,2,\\\"Red\\\",[]],[1,2,2,\\\"Red\\\",[]],[1,1,2,\\\"Red\\\",[]],[1,0,2,\\\"Red\\\",[]],[0,3,2,\\\"Red\\\",[]],[0,2,2,\\\"Red\\\",[]],[0,1,2,\\\"Red\\\",[]],[0,0,2,\\\"Red\\\",[]],[3,3,3,\\\"Red\\\",[]],[3,2,3,\\\"Red\\\",[]],[3,1,3,\\\"Red\\\",[]],[3,0,3,\\\"Red\\\",[]],[2,3,3,\\\"Red\\\",[]],[2,2,3,\\\"Red\\\",[]],[2,1,3,\\\"Red\\\",[]],[2,0,3,\\\"Red\\\",[]],[1,3,3,\\\"Red\\\",[]],[1,2,3,\\\"Red\\\",[]],[1,1,3,\\\"Red\\\",[]],[1,0,3,\\\"Red\\\",[]],[0,3,3,\\\"Red\\\",[]],[0,2,3,\\\"Red\\\",[]],[0,1,3,\\\"Red\\\",[]],[3,3,4,\\\"Blue\\\",[]],[3,2,4,\\\"Blue\\\",[\\\"S\\\"]],[3,1,4,\\\"Blue\\\",[\\\"S\\\"]],[3,0,4,\\\"Blue\\\",[]]])"}
{"time":"2017-01-16T20:28:07.006","id":"sidaw","log":"(:q \"add yellow top\")"}
{"time":"2017-01-16T20:28:07.517","id":"sidaw","log":"(:accept \"add yellow top\" \"(: add yellow top)\")"}
{"time":"2017-01-16T20:28:43.048","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:28:43.071","id":"sidaw","log":"(:q \"brown beam top 5\")"}
{"time":"2017-01-16T20:28:44.801","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:28:44.809","id":"sidaw","log":"(:q \"brown beam top 10\")"}
{"time":"2017-01-16T20:28:46.788","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:28:46.811","id":"sidaw","log":"(:q \"brown beam top 12\")"}
{"time":"2017-01-16T20:28:54.718","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:28:54.726","id":"sidaw","log":"(:q \"brown beam top 9\")"}
{"time":"2017-01-16T20:28:57.036","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:28:57.049","id":"sidaw","log":"(:q \"brown beam top 10\")"}
{"time":"2017-01-16T20:28:57.414","id":"sidaw","log":"(:accept \"brown beam top 10\" \"(:blk (:loop (number 10) (:s (: add brown here) (: select (call adj top)))))\")"}
{"time":"2017-01-16T20:29:07.992","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[\\\"S\\\"]],[0,0,1,\\\"Brown\\\",[]],[0,0,2,\\\"Brown\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:29:08.004","id":"sidaw","log":"(:q \"green branch 3\")"}
{"time":"2017-01-16T20:29:23.596","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[\\\"S\\\"]],[0,0,1,\\\"Brown\\\",[]],[0,0,2,\\\"Brown\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:29:23.618","id":"sidaw","log":"(:q \"repeat 3 [add green left; add green right; add green front; add green back]\")"}
{"time":"2017-01-16T20:29:24.983","id":"sidaw","log":"(:accept \"repeat 3 [add green left; add green right; add green front; add green back]\" \"(:loop (number 3) (:s (:s (:s (: add green left) (: add green right)) (: add green front)) (: add green back)))\")"}
{"time":"2017-01-16T20:29:26.228","id":"sidaw","log":"(:def_ret \"green branch 3\" \"[[\\\"repeat 3 [add green left; add green right; add green front; add green back]\\\",\\\"(:loop (number 3) (:s (:s (:s (: add green left) (: add green right)) (: add green front)) (: add green back)))\\\"]]\")"}
{"time":"2017-01-16T20:29:33.013","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[\\\"S\\\"]],[0,0,1,\\\"Brown\\\",[]],[0,0,2,\\\"Brown\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:29:33.035","id":"sidaw","log":"(:q \"select top\")"}
{"time":"2017-01-16T20:29:33.408","id":"sidaw","log":"(:accept \"select top\" \"(: select (call adj top))\")"}
{"time":"2017-01-16T20:29:37.301","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[]],[0,0,1,\\\"Brown\\\",[\\\"S\\\"]],[0,0,2,\\\"Brown\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:29:37.323","id":"sidaw","log":"(:q \"green branch 3\")"}
{"time":"2017-01-16T20:29:38.826","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[]],[0,0,1,\\\"Brown\\\",[\\\"S\\\"]],[0,0,2,\\\"Brown\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:29:38.839","id":"sidaw","log":"(:q \"green branch 4\")"}
{"time":"2017-01-16T20:29:40.267","id":"sidaw","log":"(:accept \"green branch 4\" \"(:loop (number 4) (:s (:s (:s (: add green left) (: add green right)) (: add green front)) (: add green back)))\")"}
{"time":"2017-01-16T20:29:42.986","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[\\\"S\\\"]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:29:43","id":"sidaw","log":"(:q \"select top of top\")"}
{"time":"2017-01-16T20:29:43.446","id":"sidaw","log":"(:accept \"select top of top\" \"(: select (call adj top (call adj top)))\")"}
{"time":"2017-01-16T20:29:48.719","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[0,0,3,\\\"Brown\\\",[\\\"S\\\"]],[0,0,4,\\\"Brown\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:29:48.741","id":"sidaw","log":"(:q \"yellow branch 5\")"}
{"time":"2017-01-16T20:29:53.436","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[0,0,3,\\\"Brown\\\",[\\\"S\\\"]],[0,0,4,\\\"Brown\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:29:53.458","id":"sidaw","log":"(:q \"green branch 5\")"}
{"time":"2017-01-16T20:29:54.990","id":"sidaw","log":"(:accept \"green branch 5\" \"(:loop (number 5) (:s (:s (:s (: add green left) (: add green right)) (: add green front)) (: add green back)))\")"}
{"time":"2017-01-16T20:29:58.690","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[5,0,3,\\\"Green\\\",[]],[4,0,3,\\\"Green\\\",[]],[3,0,3,\\\"Green\\\",[]],[2,0,3,\\\"Green\\\",[]],[1,0,3,\\\"Green\\\",[]],[0,5,3,\\\"Green\\\",[]],[0,4,3,\\\"Green\\\",[]],[0,3,3,\\\"Green\\\",[]],[0,2,3,\\\"Green\\\",[]],[0,1,3,\\\"Green\\\",[]],[0,0,3,\\\"Brown\\\",[\\\"S\\\"]],[0,-1,3,\\\"Green\\\",[]],[0,-2,3,\\\"Green\\\",[]],[0,-3,3,\\\"Green\\\",[]],[0,-4,3,\\\"Green\\\",[]],[0,-5,3,\\\"Green\\\",[]],[-1,0,3,\\\"Green\\\",[]],[-2,0,3,\\\"Green\\\",[]],[-3,0,3,\\\"Green\\\",[]],[-4,0,3,\\\"Green\\\",[]],[-5,0,3,\\\"Green\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:29:58.698","id":"sidaw","log":"(:q \"select top\")"}
{"time":"2017-01-16T20:29:59.064","id":"sidaw","log":"(:accept \"select top\" \"(: select (call adj top))\")"}
{"time":"2017-01-16T20:30:02.154","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[5,0,3,\\\"Green\\\",[]],[4,0,3,\\\"Green\\\",[]],[3,0,3,\\\"Green\\\",[]],[2,0,3,\\\"Green\\\",[]],[1,0,3,\\\"Green\\\",[]],[0,5,3,\\\"Green\\\",[]],[0,4,3,\\\"Green\\\",[]],[0,3,3,\\\"Green\\\",[]],[0,2,3,\\\"Green\\\",[]],[0,1,3,\\\"Green\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,-1,3,\\\"Green\\\",[]],[0,-2,3,\\\"Green\\\",[]],[0,-3,3,\\\"Green\\\",[]],[0,-4,3,\\\"Green\\\",[]],[0,-5,3,\\\"Green\\\",[]],[-1,0,3,\\\"Green\\\",[]],[-2,0,3,\\\"Green\\\",[]],[-3,0,3,\\\"Green\\\",[]],[-4,0,3,\\\"Green\\\",[]],[-5,0,3,\\\"Green\\\",[]],[0,0,4,\\\"Brown\\\",[\\\"S\\\"]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:30:02.162","id":"sidaw","log":"(:q \"green branch 3\")"}
{"time":"2017-01-16T20:30:02.973","id":"sidaw","log":"(:accept \"green branch 3\" \"(:loop (number 3) (:s (:s (:s (: add green left) (: add green right)) (: add green front)) (: add green back)))\")"}
{"time":"2017-01-16T20:30:06.304","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[5,0,3,\\\"Green\\\",[]],[4,0,3,\\\"Green\\\",[]],[3,0,3,\\\"Green\\\",[]],[2,0,3,\\\"Green\\\",[]],[1,0,3,\\\"Green\\\",[]],[0,5,3,\\\"Green\\\",[]],[0,4,3,\\\"Green\\\",[]],[0,3,3,\\\"Green\\\",[]],[0,2,3,\\\"Green\\\",[]],[0,1,3,\\\"Green\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,-1,3,\\\"Green\\\",[]],[0,-2,3,\\\"Green\\\",[]],[0,-3,3,\\\"Green\\\",[]],[0,-4,3,\\\"Green\\\",[]],[0,-5,3,\\\"Green\\\",[]],[-1,0,3,\\\"Green\\\",[]],[-2,0,3,\\\"Green\\\",[]],[-3,0,3,\\\"Green\\\",[]],[-4,0,3,\\\"Green\\\",[]],[-5,0,3,\\\"Green\\\",[]],[3,0,4,\\\"Green\\\",[]],[2,0,4,\\\"Green\\\",[]],[1,0,4,\\\"Green\\\",[]],[0,3,4,\\\"Green\\\",[]],[0,2,4,\\\"Green\\\",[]],[0,1,4,\\\"Green\\\",[]],[0,0,4,\\\"Brown\\\",[\\\"S\\\"]],[0,-1,4,\\\"Green\\\",[]],[0,-2,4,\\\"Green\\\",[]],[0,-3,4,\\\"Green\\\",[]],[-1,0,4,\\\"Green\\\",[]],[-2,0,4,\\\"Green\\\",[]],[-3,0,4,\\\"Green\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:30:06.312","id":"sidaw","log":"(:q \"select top of top\")"}
{"time":"2017-01-16T20:30:06.711","id":"sidaw","log":"(:accept \"select top of top\" \"(: select (call adj top (call adj top)))\")"}
{"time":"2017-01-16T20:30:09.165","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[5,0,3,\\\"Green\\\",[]],[4,0,3,\\\"Green\\\",[]],[3,0,3,\\\"Green\\\",[]],[2,0,3,\\\"Green\\\",[]],[1,0,3,\\\"Green\\\",[]],[0,5,3,\\\"Green\\\",[]],[0,4,3,\\\"Green\\\",[]],[0,3,3,\\\"Green\\\",[]],[0,2,3,\\\"Green\\\",[]],[0,1,3,\\\"Green\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,-1,3,\\\"Green\\\",[]],[0,-2,3,\\\"Green\\\",[]],[0,-3,3,\\\"Green\\\",[]],[0,-4,3,\\\"Green\\\",[]],[0,-5,3,\\\"Green\\\",[]],[-1,0,3,\\\"Green\\\",[]],[-2,0,3,\\\"Green\\\",[]],[-3,0,3,\\\"Green\\\",[]],[-4,0,3,\\\"Green\\\",[]],[-5,0,3,\\\"Green\\\",[]],[3,0,4,\\\"Green\\\",[]],[2,0,4,\\\"Green\\\",[]],[1,0,4,\\\"Green\\\",[]],[0,3,4,\\\"Green\\\",[]],[0,2,4,\\\"Green\\\",[]],[0,1,4,\\\"Green\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,-1,4,\\\"Green\\\",[]],[0,-2,4,\\\"Green\\\",[]],[0,-3,4,\\\"Green\\\",[]],[-1,0,4,\\\"Green\\\",[]],[-2,0,4,\\\"Green\\\",[]],[-3,0,4,\\\"Green\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[\\\"S\\\"]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:30:09.187","id":"sidaw","log":"(:q \"green branch 2\")"}
{"time":"2017-01-16T20:30:09.580","id":"sidaw","log":"(:accept \"green branch 2\" \"(:loop (number 2) (:s (:s (:s (: add green left) (: add green right)) (: add green front)) (: add green back)))\")"}
{"time":"2017-01-16T20:30:12.155","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[5,0,3,\\\"Green\\\",[]],[4,0,3,\\\"Green\\\",[]],[3,0,3,\\\"Green\\\",[]],[2,0,3,\\\"Green\\\",[]],[1,0,3,\\\"Green\\\",[]],[0,5,3,\\\"Green\\\",[]],[0,4,3,\\\"Green\\\",[]],[0,3,3,\\\"Green\\\",[]],[0,2,3,\\\"Green\\\",[]],[0,1,3,\\\"Green\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,-1,3,\\\"Green\\\",[]],[0,-2,3,\\\"Green\\\",[]],[0,-3,3,\\\"Green\\\",[]],[0,-4,3,\\\"Green\\\",[]],[0,-5,3,\\\"Green\\\",[]],[-1,0,3,\\\"Green\\\",[]],[-2,0,3,\\\"Green\\\",[]],[-3,0,3,\\\"Green\\\",[]],[-4,0,3,\\\"Green\\\",[]],[-5,0,3,\\\"Green\\\",[]],[3,0,4,\\\"Green\\\",[]],[2,0,4,\\\"Green\\\",[]],[1,0,4,\\\"Green\\\",[]],[0,3,4,\\\"Green\\\",[]],[0,2,4,\\\"Green\\\",[]],[0,1,4,\\\"Green\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,-1,4,\\\"Green\\\",[]],[0,-2,4,\\\"Green\\\",[]],[0,-3,4,\\\"Green\\\",[]],[-1,0,4,\\\"Green\\\",[]],[-2,0,4,\\\"Green\\\",[]],[-3,0,4,\\\"Green\\\",[]],[0,0,5,\\\"Brown\\\",[]],[2,0,6,\\\"Green\\\",[]],[1,0,6,\\\"Green\\\",[]],[0,2,6,\\\"Green\\\",[]],[0,1,6,\\\"Green\\\",[]],[0,0,6,\\\"Brown\\\",[\\\"S\\\"]],[0,-1,6,\\\"Green\\\",[]],[0,-2,6,\\\"Green\\\",[]],[-1,0,6,\\\"Green\\\",[]],[-2,0,6,\\\"Green\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:30:12.178","id":"sidaw","log":"(:q \"select top of top\")"}
{"time":"2017-01-16T20:30:12.509","id":"sidaw","log":"(:accept \"select top of top\" \"(: select (call adj top (call adj top)))\")"}
{"time":"2017-01-16T20:30:14.684","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[5,0,3,\\\"Green\\\",[]],[4,0,3,\\\"Green\\\",[]],[3,0,3,\\\"Green\\\",[]],[2,0,3,\\\"Green\\\",[]],[1,0,3,\\\"Green\\\",[]],[0,5,3,\\\"Green\\\",[]],[0,4,3,\\\"Green\\\",[]],[0,3,3,\\\"Green\\\",[]],[0,2,3,\\\"Green\\\",[]],[0,1,3,\\\"Green\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,-1,3,\\\"Green\\\",[]],[0,-2,3,\\\"Green\\\",[]],[0,-3,3,\\\"Green\\\",[]],[0,-4,3,\\\"Green\\\",[]],[0,-5,3,\\\"Green\\\",[]],[-1,0,3,\\\"Green\\\",[]],[-2,0,3,\\\"Green\\\",[]],[-3,0,3,\\\"Green\\\",[]],[-4,0,3,\\\"Green\\\",[]],[-5,0,3,\\\"Green\\\",[]],[3,0,4,\\\"Green\\\",[]],[2,0,4,\\\"Green\\\",[]],[1,0,4,\\\"Green\\\",[]],[0,3,4,\\\"Green\\\",[]],[0,2,4,\\\"Green\\\",[]],[0,1,4,\\\"Green\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,-1,4,\\\"Green\\\",[]],[0,-2,4,\\\"Green\\\",[]],[0,-3,4,\\\"Green\\\",[]],[-1,0,4,\\\"Green\\\",[]],[-2,0,4,\\\"Green\\\",[]],[-3,0,4,\\\"Green\\\",[]],[0,0,5,\\\"Brown\\\",[]],[2,0,6,\\\"Green\\\",[]],[1,0,6,\\\"Green\\\",[]],[0,2,6,\\\"Green\\\",[]],[0,1,6,\\\"Green\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,-1,6,\\\"Green\\\",[]],[0,-2,6,\\\"Green\\\",[]],[-1,0,6,\\\"Green\\\",[]],[-2,0,6,\\\"Green\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[\\\"S\\\"]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:30:14.692","id":"sidaw","log":"(:q \"green branch\")"}
{"time":"2017-01-16T20:30:19.130","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[5,0,3,\\\"Green\\\",[]],[4,0,3,\\\"Green\\\",[]],[3,0,3,\\\"Green\\\",[]],[2,0,3,\\\"Green\\\",[]],[1,0,3,\\\"Green\\\",[]],[0,5,3,\\\"Green\\\",[]],[0,4,3,\\\"Green\\\",[]],[0,3,3,\\\"Green\\\",[]],[0,2,3,\\\"Green\\\",[]],[0,1,3,\\\"Green\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,-1,3,\\\"Green\\\",[]],[0,-2,3,\\\"Green\\\",[]],[0,-3,3,\\\"Green\\\",[]],[0,-4,3,\\\"Green\\\",[]],[0,-5,3,\\\"Green\\\",[]],[-1,0,3,\\\"Green\\\",[]],[-2,0,3,\\\"Green\\\",[]],[-3,0,3,\\\"Green\\\",[]],[-4,0,3,\\\"Green\\\",[]],[-5,0,3,\\\"Green\\\",[]],[3,0,4,\\\"Green\\\",[]],[2,0,4,\\\"Green\\\",[]],[1,0,4,\\\"Green\\\",[]],[0,3,4,\\\"Green\\\",[]],[0,2,4,\\\"Green\\\",[]],[0,1,4,\\\"Green\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,-1,4,\\\"Green\\\",[]],[0,-2,4,\\\"Green\\\",[]],[0,-3,4,\\\"Green\\\",[]],[-1,0,4,\\\"Green\\\",[]],[-2,0,4,\\\"Green\\\",[]],[-3,0,4,\\\"Green\\\",[]],[0,0,5,\\\"Brown\\\",[]],[2,0,6,\\\"Green\\\",[]],[1,0,6,\\\"Green\\\",[]],[0,2,6,\\\"Green\\\",[]],[0,1,6,\\\"Green\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,-1,6,\\\"Green\\\",[]],[0,-2,6,\\\"Green\\\",[]],[-1,0,6,\\\"Green\\\",[]],[-2,0,6,\\\"Green\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[\\\"S\\\"]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:30:19.148","id":"sidaw","log":"(:q \"green branch 1\")"}
{"time":"2017-01-16T20:30:19.559","id":"sidaw","log":"(:accept \"green branch 1\" \"(:loop (number 1) (:s (:s (:s (: add green left) (: add green right)) (: add green front)) (: add green back)))\")"}
{"time":"2017-01-16T20:30:54.187","id":"sidaw","log":"(:context [[0,0,0,\\\"Fake\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:30:54.205","id":"sidaw","log":"(:q \"brown beam top 10\")"}
{"time":"2017-01-16T20:30:54.726","id":"sidaw","log":"(:accept \"brown beam top 10\" \"(:blk (:loop (number 10) (:s (: add brown here) (: select (call adj top)))))\")"}
{"time":"2017-01-16T20:31:03.001","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[\\\"S\\\"]],[0,0,1,\\\"Brown\\\",[]],[0,0,2,\\\"Brown\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:31:03.019","id":"sidaw","log":"(:q \"green branch 1; select top\")"}
{"time":"2017-01-16T20:31:05.185","id":"sidaw","log":"(:accept \"green branch 1; select top\" \"(:s (:loop (number 1) (:s (:s (:s (: add green left) (: add green right)) (: add green front)) (: add green back))) (: select (call adj top)))\")"}
{"time":"2017-01-16T20:31:13.792","id":"sidaw","log":"(:context [[1,0,0,\\\"Green\\\",[]],[0,1,0,\\\"Green\\\",[]],[0,0,0,\\\"Brown\\\",[]],[0,-1,0,\\\"Green\\\",[]],[-1,0,0,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[\\\"S\\\"]],[0,0,2,\\\"Brown\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:31:13.805","id":"sidaw","log":"(:q \"green branch 2; select top\")"}
{"time":"2017-01-16T20:31:14.381","id":"sidaw","log":"(:accept \"green branch 2; select top\" \"(:s (:loop (number 2) (:s (:s (:s (: add green left) (: add green right)) (: add green front)) (: add green back))) (: select (call adj top)))\")"}
{"time":"2017-01-16T20:31:23.649","id":"sidaw","log":"(:context [[0,0,0,\\\"Brown\\\",[\\\"S\\\"]],[0,0,1,\\\"Brown\\\",[]],[0,0,2,\\\"Brown\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:31:23.657","id":"sidaw","log":"(:q \"green branch 5; select top\")"}
{"time":"2017-01-16T20:31:24.451","id":"sidaw","log":"(:accept \"green branch 5; select top\" \"(:s (:loop (number 5) (:s (:s (:s (: add green left) (: add green right)) (: add green front)) (: add green back))) (: select (call adj top)))\")"}
{"time":"2017-01-16T20:31:27.450","id":"sidaw","log":"(:context [[5,0,0,\\\"Green\\\",[]],[4,0,0,\\\"Green\\\",[]],[3,0,0,\\\"Green\\\",[]],[2,0,0,\\\"Green\\\",[]],[1,0,0,\\\"Green\\\",[]],[0,5,0,\\\"Green\\\",[]],[0,4,0,\\\"Green\\\",[]],[0,3,0,\\\"Green\\\",[]],[0,2,0,\\\"Green\\\",[]],[0,1,0,\\\"Green\\\",[]],[0,0,0,\\\"Brown\\\",[]],[0,-1,0,\\\"Green\\\",[]],[0,-2,0,\\\"Green\\\",[]],[0,-3,0,\\\"Green\\\",[]],[0,-4,0,\\\"Green\\\",[]],[0,-5,0,\\\"Green\\\",[]],[-1,0,0,\\\"Green\\\",[]],[-2,0,0,\\\"Green\\\",[]],[-3,0,0,\\\"Green\\\",[]],[-4,0,0,\\\"Green\\\",[]],[-5,0,0,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[\\\"S\\\"]],[0,0,2,\\\"Brown\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:31:27.473","id":"sidaw","log":"(:q \"green branch 4; select top\")"}
{"time":"2017-01-16T20:31:27.827","id":"sidaw","log":"(:accept \"green branch 4; select top\" \"(:s (:loop (number 4) (:s (:s (:s (: add green left) (: add green right)) (: add green front)) (: add green back))) (: select (call adj top)))\")"}
{"time":"2017-01-16T20:31:30.530","id":"sidaw","log":"(:context [[5,0,0,\\\"Green\\\",[]],[4,0,0,\\\"Green\\\",[]],[3,0,0,\\\"Green\\\",[]],[2,0,0,\\\"Green\\\",[]],[1,0,0,\\\"Green\\\",[]],[0,5,0,\\\"Green\\\",[]],[0,4,0,\\\"Green\\\",[]],[0,3,0,\\\"Green\\\",[]],[0,2,0,\\\"Green\\\",[]],[0,1,0,\\\"Green\\\",[]],[0,0,0,\\\"Brown\\\",[]],[0,-1,0,\\\"Green\\\",[]],[0,-2,0,\\\"Green\\\",[]],[0,-3,0,\\\"Green\\\",[]],[0,-4,0,\\\"Green\\\",[]],[0,-5,0,\\\"Green\\\",[]],[-1,0,0,\\\"Green\\\",[]],[-2,0,0,\\\"Green\\\",[]],[-3,0,0,\\\"Green\\\",[]],[-4,0,0,\\\"Green\\\",[]],[-5,0,0,\\\"Green\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[\\\"S\\\"]],[0,0,3,\\\"Brown\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:31:30.538","id":"sidaw","log":"(:q \"green branch 3; select top\")"}
{"time":"2017-01-16T20:31:30.802","id":"sidaw","log":"(:accept \"green branch 3; select top\" \"(:s (:loop (number 3) (:s (:s (:s (: add green left) (: add green right)) (: add green front)) (: add green back))) (: select (call adj top)))\")"}
{"time":"2017-01-16T20:31:33.369","id":"sidaw","log":"(:context [[5,0,0,\\\"Green\\\",[]],[4,0,0,\\\"Green\\\",[]],[3,0,0,\\\"Green\\\",[]],[2,0,0,\\\"Green\\\",[]],[1,0,0,\\\"Green\\\",[]],[0,5,0,\\\"Green\\\",[]],[0,4,0,\\\"Green\\\",[]],[0,3,0,\\\"Green\\\",[]],[0,2,0,\\\"Green\\\",[]],[0,1,0,\\\"Green\\\",[]],[0,0,0,\\\"Brown\\\",[]],[0,-1,0,\\\"Green\\\",[]],[0,-2,0,\\\"Green\\\",[]],[0,-3,0,\\\"Green\\\",[]],[0,-4,0,\\\"Green\\\",[]],[0,-5,0,\\\"Green\\\",[]],[-1,0,0,\\\"Green\\\",[]],[-2,0,0,\\\"Green\\\",[]],[-3,0,0,\\\"Green\\\",[]],[-4,0,0,\\\"Green\\\",[]],[-5,0,0,\\\"Green\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[3,0,2,\\\"Green\\\",[]],[2,0,2,\\\"Green\\\",[]],[1,0,2,\\\"Green\\\",[]],[0,3,2,\\\"Green\\\",[]],[0,2,2,\\\"Green\\\",[]],[0,1,2,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[0,-1,2,\\\"Green\\\",[]],[0,-2,2,\\\"Green\\\",[]],[0,-3,2,\\\"Green\\\",[]],[-1,0,2,\\\"Green\\\",[]],[-2,0,2,\\\"Green\\\",[]],[-3,0,2,\\\"Green\\\",[]],[0,0,3,\\\"Brown\\\",[\\\"S\\\"]],[0,0,4,\\\"Brown\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:31:33.387","id":"sidaw","log":"(:q \"green branch 2; select top\")"}
{"time":"2017-01-16T20:31:33.756","id":"sidaw","log":"(:accept \"green branch 2; select top\" \"(:s (:loop (number 2) (:s (:s (:s (: add green left) (: add green right)) (: add green front)) (: add green back))) (: select (call adj top)))\")"}
{"time":"2017-01-16T20:31:37.071","id":"sidaw","log":"(:context [[5,0,0,\\\"Green\\\",[]],[4,0,0,\\\"Green\\\",[]],[3,0,0,\\\"Green\\\",[]],[2,0,0,\\\"Green\\\",[]],[1,0,0,\\\"Green\\\",[]],[0,5,0,\\\"Green\\\",[]],[0,4,0,\\\"Green\\\",[]],[0,3,0,\\\"Green\\\",[]],[0,2,0,\\\"Green\\\",[]],[0,1,0,\\\"Green\\\",[]],[0,0,0,\\\"Brown\\\",[]],[0,-1,0,\\\"Green\\\",[]],[0,-2,0,\\\"Green\\\",[]],[0,-3,0,\\\"Green\\\",[]],[0,-4,0,\\\"Green\\\",[]],[0,-5,0,\\\"Green\\\",[]],[-1,0,0,\\\"Green\\\",[]],[-2,0,0,\\\"Green\\\",[]],[-3,0,0,\\\"Green\\\",[]],[-4,0,0,\\\"Green\\\",[]],[-5,0,0,\\\"Green\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[3,0,2,\\\"Green\\\",[]],[2,0,2,\\\"Green\\\",[]],[1,0,2,\\\"Green\\\",[]],[0,3,2,\\\"Green\\\",[]],[0,2,2,\\\"Green\\\",[]],[0,1,2,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[0,-1,2,\\\"Green\\\",[]],[0,-2,2,\\\"Green\\\",[]],[0,-3,2,\\\"Green\\\",[]],[-1,0,2,\\\"Green\\\",[]],[-2,0,2,\\\"Green\\\",[]],[-3,0,2,\\\"Green\\\",[]],[2,0,3,\\\"Green\\\",[]],[1,0,3,\\\"Green\\\",[]],[0,2,3,\\\"Green\\\",[]],[0,1,3,\\\"Green\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,-1,3,\\\"Green\\\",[]],[0,-2,3,\\\"Green\\\",[]],[-1,0,3,\\\"Green\\\",[]],[-2,0,3,\\\"Green\\\",[]],[0,0,4,\\\"Brown\\\",[\\\"S\\\"]],[0,0,5,\\\"Brown\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:31:37.079","id":"sidaw","log":"(:q \"green branch 1; select top\")"}
{"time":"2017-01-16T20:31:37.591","id":"sidaw","log":"(:accept \"green branch 1; select top\" \"(:s (:loop (number 1) (:s (:s (:s (: add green left) (: add green right)) (: add green front)) (: add green back))) (: select (call adj top)))\")"}
{"time":"2017-01-16T20:31:54.423","id":"sidaw","log":"(:context [[5,0,0,\\\"Green\\\",[]],[4,0,0,\\\"Green\\\",[]],[3,0,0,\\\"Green\\\",[]],[2,0,0,\\\"Green\\\",[]],[1,0,0,\\\"Green\\\",[]],[0,5,0,\\\"Green\\\",[]],[0,4,0,\\\"Green\\\",[]],[0,3,0,\\\"Green\\\",[]],[0,2,0,\\\"Green\\\",[]],[0,1,0,\\\"Green\\\",[]],[0,0,0,\\\"Brown\\\",[]],[0,-1,0,\\\"Green\\\",[]],[0,-2,0,\\\"Green\\\",[]],[0,-3,0,\\\"Green\\\",[]],[0,-4,0,\\\"Green\\\",[]],[0,-5,0,\\\"Green\\\",[]],[-1,0,0,\\\"Green\\\",[]],[-2,0,0,\\\"Green\\\",[]],[-3,0,0,\\\"Green\\\",[]],[-4,0,0,\\\"Green\\\",[]],[-5,0,0,\\\"Green\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[3,0,2,\\\"Green\\\",[]],[2,0,2,\\\"Green\\\",[]],[1,0,2,\\\"Green\\\",[]],[0,3,2,\\\"Green\\\",[]],[0,2,2,\\\"Green\\\",[]],[0,1,2,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[0,-1,2,\\\"Green\\\",[]],[0,-2,2,\\\"Green\\\",[]],[0,-3,2,\\\"Green\\\",[]],[-1,0,2,\\\"Green\\\",[]],[-2,0,2,\\\"Green\\\",[]],[-3,0,2,\\\"Green\\\",[]],[2,0,3,\\\"Green\\\",[]],[1,0,3,\\\"Green\\\",[]],[0,2,3,\\\"Green\\\",[]],[0,1,3,\\\"Green\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,-1,3,\\\"Green\\\",[]],[0,-2,3,\\\"Green\\\",[]],[-1,0,3,\\\"Green\\\",[]],[-2,0,3,\\\"Green\\\",[]],[1,0,4,\\\"Green\\\",[]],[0,1,4,\\\"Green\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,-1,4,\\\"Green\\\",[]],[-1,0,4,\\\"Green\\\",[]],[0,0,5,\\\"Brown\\\",[\\\"S\\\"]],[0,0,6,\\\"Brown\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:31:54.436","id":"sidaw","log":"(:q \"red branch 1; select top\")"}
{"time":"2017-01-16T20:31:54.945","id":"sidaw","log":"(:accept \"red branch 1; select top\" \"(:s (:loop (number 1) (:s (:s (:s (: add red left) (: add red right)) (: add red front)) (: add red back))) (: select (call adj top)))\")"}
{"time":"2017-01-16T20:31:58.263","id":"sidaw","log":"(:context [[5,0,0,\\\"Green\\\",[]],[4,0,0,\\\"Green\\\",[]],[3,0,0,\\\"Green\\\",[]],[2,0,0,\\\"Green\\\",[]],[1,0,0,\\\"Green\\\",[]],[0,5,0,\\\"Green\\\",[]],[0,4,0,\\\"Green\\\",[]],[0,3,0,\\\"Green\\\",[]],[0,2,0,\\\"Green\\\",[]],[0,1,0,\\\"Green\\\",[]],[0,0,0,\\\"Brown\\\",[]],[0,-1,0,\\\"Green\\\",[]],[0,-2,0,\\\"Green\\\",[]],[0,-3,0,\\\"Green\\\",[]],[0,-4,0,\\\"Green\\\",[]],[0,-5,0,\\\"Green\\\",[]],[-1,0,0,\\\"Green\\\",[]],[-2,0,0,\\\"Green\\\",[]],[-3,0,0,\\\"Green\\\",[]],[-4,0,0,\\\"Green\\\",[]],[-5,0,0,\\\"Green\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[3,0,2,\\\"Green\\\",[]],[2,0,2,\\\"Green\\\",[]],[1,0,2,\\\"Green\\\",[]],[0,3,2,\\\"Green\\\",[]],[0,2,2,\\\"Green\\\",[]],[0,1,2,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[0,-1,2,\\\"Green\\\",[]],[0,-2,2,\\\"Green\\\",[]],[0,-3,2,\\\"Green\\\",[]],[-1,0,2,\\\"Green\\\",[]],[-2,0,2,\\\"Green\\\",[]],[-3,0,2,\\\"Green\\\",[]],[2,0,3,\\\"Green\\\",[]],[1,0,3,\\\"Green\\\",[]],[0,2,3,\\\"Green\\\",[]],[0,1,3,\\\"Green\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,-1,3,\\\"Green\\\",[]],[0,-2,3,\\\"Green\\\",[]],[-1,0,3,\\\"Green\\\",[]],[-2,0,3,\\\"Green\\\",[]],[1,0,4,\\\"Green\\\",[]],[0,1,4,\\\"Green\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,-1,4,\\\"Green\\\",[]],[-1,0,4,\\\"Green\\\",[]],[1,0,5,\\\"Red\\\",[]],[0,1,5,\\\"Red\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,-1,5,\\\"Red\\\",[]],[-1,0,5,\\\"Red\\\",[]],[0,0,6,\\\"Brown\\\",[\\\"S\\\"]],[0,0,7,\\\"Brown\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:31:58.276","id":"sidaw","log":"(:q \"red branch 2; select top\")"}
{"time":"2017-01-16T20:31:58.626","id":"sidaw","log":"(:accept \"red branch 2; select top\" \"(:s (:loop (number 2) (:s (:s (:s (: add red left) (: add red right)) (: add red front)) (: add red back))) (: select (call adj top)))\")"}
{"time":"2017-01-16T20:32:01.731","id":"sidaw","log":"(:context [[5,0,0,\\\"Green\\\",[]],[4,0,0,\\\"Green\\\",[]],[3,0,0,\\\"Green\\\",[]],[2,0,0,\\\"Green\\\",[]],[1,0,0,\\\"Green\\\",[]],[0,5,0,\\\"Green\\\",[]],[0,4,0,\\\"Green\\\",[]],[0,3,0,\\\"Green\\\",[]],[0,2,0,\\\"Green\\\",[]],[0,1,0,\\\"Green\\\",[]],[0,0,0,\\\"Brown\\\",[]],[0,-1,0,\\\"Green\\\",[]],[0,-2,0,\\\"Green\\\",[]],[0,-3,0,\\\"Green\\\",[]],[0,-4,0,\\\"Green\\\",[]],[0,-5,0,\\\"Green\\\",[]],[-1,0,0,\\\"Green\\\",[]],[-2,0,0,\\\"Green\\\",[]],[-3,0,0,\\\"Green\\\",[]],[-4,0,0,\\\"Green\\\",[]],[-5,0,0,\\\"Green\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[3,0,2,\\\"Green\\\",[]],[2,0,2,\\\"Green\\\",[]],[1,0,2,\\\"Green\\\",[]],[0,3,2,\\\"Green\\\",[]],[0,2,2,\\\"Green\\\",[]],[0,1,2,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[0,-1,2,\\\"Green\\\",[]],[0,-2,2,\\\"Green\\\",[]],[0,-3,2,\\\"Green\\\",[]],[-1,0,2,\\\"Green\\\",[]],[-2,0,2,\\\"Green\\\",[]],[-3,0,2,\\\"Green\\\",[]],[2,0,3,\\\"Green\\\",[]],[1,0,3,\\\"Green\\\",[]],[0,2,3,\\\"Green\\\",[]],[0,1,3,\\\"Green\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,-1,3,\\\"Green\\\",[]],[0,-2,3,\\\"Green\\\",[]],[-1,0,3,\\\"Green\\\",[]],[-2,0,3,\\\"Green\\\",[]],[1,0,4,\\\"Green\\\",[]],[0,1,4,\\\"Green\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,-1,4,\\\"Green\\\",[]],[-1,0,4,\\\"Green\\\",[]],[1,0,5,\\\"Red\\\",[]],[0,1,5,\\\"Red\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,-1,5,\\\"Red\\\",[]],[-1,0,5,\\\"Red\\\",[]],[2,0,6,\\\"Red\\\",[]],[1,0,6,\\\"Red\\\",[]],[0,2,6,\\\"Red\\\",[]],[0,1,6,\\\"Red\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,-1,6,\\\"Red\\\",[]],[0,-2,6,\\\"Red\\\",[]],[-1,0,6,\\\"Red\\\",[]],[-2,0,6,\\\"Red\\\",[]],[0,0,7,\\\"Brown\\\",[\\\"S\\\"]],[0,0,8,\\\"Brown\\\",[]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:32:01.748","id":"sidaw","log":"(:q \"red branch 3; select top\")"}
{"time":"2017-01-16T20:32:02.153","id":"sidaw","log":"(:accept \"red branch 3; select top\" \"(:s (:loop (number 3) (:s (:s (:s (: add red left) (: add red right)) (: add red front)) (: add red back))) (: select (call adj top)))\")"}
{"time":"2017-01-16T20:32:04.273","id":"sidaw","log":"(:context [[5,0,0,\\\"Green\\\",[]],[4,0,0,\\\"Green\\\",[]],[3,0,0,\\\"Green\\\",[]],[2,0,0,\\\"Green\\\",[]],[1,0,0,\\\"Green\\\",[]],[0,5,0,\\\"Green\\\",[]],[0,4,0,\\\"Green\\\",[]],[0,3,0,\\\"Green\\\",[]],[0,2,0,\\\"Green\\\",[]],[0,1,0,\\\"Green\\\",[]],[0,0,0,\\\"Brown\\\",[]],[0,-1,0,\\\"Green\\\",[]],[0,-2,0,\\\"Green\\\",[]],[0,-3,0,\\\"Green\\\",[]],[0,-4,0,\\\"Green\\\",[]],[0,-5,0,\\\"Green\\\",[]],[-1,0,0,\\\"Green\\\",[]],[-2,0,0,\\\"Green\\\",[]],[-3,0,0,\\\"Green\\\",[]],[-4,0,0,\\\"Green\\\",[]],[-5,0,0,\\\"Green\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[3,0,2,\\\"Green\\\",[]],[2,0,2,\\\"Green\\\",[]],[1,0,2,\\\"Green\\\",[]],[0,3,2,\\\"Green\\\",[]],[0,2,2,\\\"Green\\\",[]],[0,1,2,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[0,-1,2,\\\"Green\\\",[]],[0,-2,2,\\\"Green\\\",[]],[0,-3,2,\\\"Green\\\",[]],[-1,0,2,\\\"Green\\\",[]],[-2,0,2,\\\"Green\\\",[]],[-3,0,2,\\\"Green\\\",[]],[2,0,3,\\\"Green\\\",[]],[1,0,3,\\\"Green\\\",[]],[0,2,3,\\\"Green\\\",[]],[0,1,3,\\\"Green\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,-1,3,\\\"Green\\\",[]],[0,-2,3,\\\"Green\\\",[]],[-1,0,3,\\\"Green\\\",[]],[-2,0,3,\\\"Green\\\",[]],[1,0,4,\\\"Green\\\",[]],[0,1,4,\\\"Green\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,-1,4,\\\"Green\\\",[]],[-1,0,4,\\\"Green\\\",[]],[1,0,5,\\\"Red\\\",[]],[0,1,5,\\\"Red\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,-1,5,\\\"Red\\\",[]],[-1,0,5,\\\"Red\\\",[]],[2,0,6,\\\"Red\\\",[]],[1,0,6,\\\"Red\\\",[]],[0,2,6,\\\"Red\\\",[]],[0,1,6,\\\"Red\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,-1,6,\\\"Red\\\",[]],[0,-2,6,\\\"Red\\\",[]],[-1,0,6,\\\"Red\\\",[]],[-2,0,6,\\\"Red\\\",[]],[3,0,7,\\\"Red\\\",[]],[2,0,7,\\\"Red\\\",[]],[1,0,7,\\\"Red\\\",[]],[0,3,7,\\\"Red\\\",[]],[0,2,7,\\\"Red\\\",[]],[0,1,7,\\\"Red\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,-1,7,\\\"Red\\\",[]],[0,-2,7,\\\"Red\\\",[]],[0,-3,7,\\\"Red\\\",[]],[-1,0,7,\\\"Red\\\",[]],[-2,0,7,\\\"Red\\\",[]],[-3,0,7,\\\"Red\\\",[]],[0,0,8,\\\"Brown\\\",[\\\"S\\\"]],[0,0,9,\\\"Brown\\\",[]]])"}
{"time":"2017-01-16T20:32:04.296","id":"sidaw","log":"(:q \"red branch 4; select top\")"}
{"time":"2017-01-16T20:32:04.628","id":"sidaw","log":"(:accept \"red branch 4; select top\" \"(:s (:loop (number 4) (:s (:s (:s (: add red left) (: add red right)) (: add red front)) (: add red back))) (: select (call adj top)))\")"}
{"time":"2017-01-16T20:32:07.811","id":"sidaw","log":"(:context [[5,0,0,\\\"Green\\\",[]],[4,0,0,\\\"Green\\\",[]],[3,0,0,\\\"Green\\\",[]],[2,0,0,\\\"Green\\\",[]],[1,0,0,\\\"Green\\\",[]],[0,5,0,\\\"Green\\\",[]],[0,4,0,\\\"Green\\\",[]],[0,3,0,\\\"Green\\\",[]],[0,2,0,\\\"Green\\\",[]],[0,1,0,\\\"Green\\\",[]],[0,0,0,\\\"Brown\\\",[]],[0,-1,0,\\\"Green\\\",[]],[0,-2,0,\\\"Green\\\",[]],[0,-3,0,\\\"Green\\\",[]],[0,-4,0,\\\"Green\\\",[]],[0,-5,0,\\\"Green\\\",[]],[-1,0,0,\\\"Green\\\",[]],[-2,0,0,\\\"Green\\\",[]],[-3,0,0,\\\"Green\\\",[]],[-4,0,0,\\\"Green\\\",[]],[-5,0,0,\\\"Green\\\",[]],[4,0,1,\\\"Green\\\",[]],[3,0,1,\\\"Green\\\",[]],[2,0,1,\\\"Green\\\",[]],[1,0,1,\\\"Green\\\",[]],[0,4,1,\\\"Green\\\",[]],[0,3,1,\\\"Green\\\",[]],[0,2,1,\\\"Green\\\",[]],[0,1,1,\\\"Green\\\",[]],[0,0,1,\\\"Brown\\\",[]],[0,-1,1,\\\"Green\\\",[]],[0,-2,1,\\\"Green\\\",[]],[0,-3,1,\\\"Green\\\",[]],[0,-4,1,\\\"Green\\\",[]],[-1,0,1,\\\"Green\\\",[]],[-2,0,1,\\\"Green\\\",[]],[-3,0,1,\\\"Green\\\",[]],[-4,0,1,\\\"Green\\\",[]],[3,0,2,\\\"Green\\\",[]],[2,0,2,\\\"Green\\\",[]],[1,0,2,\\\"Green\\\",[]],[0,3,2,\\\"Green\\\",[]],[0,2,2,\\\"Green\\\",[]],[0,1,2,\\\"Green\\\",[]],[0,0,2,\\\"Brown\\\",[]],[0,-1,2,\\\"Green\\\",[]],[0,-2,2,\\\"Green\\\",[]],[0,-3,2,\\\"Green\\\",[]],[-1,0,2,\\\"Green\\\",[]],[-2,0,2,\\\"Green\\\",[]],[-3,0,2,\\\"Green\\\",[]],[2,0,3,\\\"Green\\\",[]],[1,0,3,\\\"Green\\\",[]],[0,2,3,\\\"Green\\\",[]],[0,1,3,\\\"Green\\\",[]],[0,0,3,\\\"Brown\\\",[]],[0,-1,3,\\\"Green\\\",[]],[0,-2,3,\\\"Green\\\",[]],[-1,0,3,\\\"Green\\\",[]],[-2,0,3,\\\"Green\\\",[]],[1,0,4,\\\"Green\\\",[]],[0,1,4,\\\"Green\\\",[]],[0,0,4,\\\"Brown\\\",[]],[0,-1,4,\\\"Green\\\",[]],[-1,0,4,\\\"Green\\\",[]],[1,0,5,\\\"Red\\\",[]],[0,1,5,\\\"Red\\\",[]],[0,0,5,\\\"Brown\\\",[]],[0,-1,5,\\\"Red\\\",[]],[-1,0,5,\\\"Red\\\",[]],[2,0,6,\\\"Red\\\",[]],[1,0,6,\\\"Red\\\",[]],[0,2,6,\\\"Red\\\",[]],[0,1,6,\\\"Red\\\",[]],[0,0,6,\\\"Brown\\\",[]],[0,-1,6,\\\"Red\\\",[]],[0,-2,6,\\\"Red\\\",[]],[-1,0,6,\\\"Red\\\",[]],[-2,0,6,\\\"Red\\\",[]],[3,0,7,\\\"Red\\\",[]],[2,0,7,\\\"Red\\\",[]],[1,0,7,\\\"Red\\\",[]],[0,3,7,\\\"Red\\\",[]],[0,2,7,\\\"Red\\\",[]],[0,1,7,\\\"Red\\\",[]],[0,0,7,\\\"Brown\\\",[]],[0,-1,7,\\\"Red\\\",[]],[0,-2,7,\\\"Red\\\",[]],[0,-3,7,\\\"Red\\\",[]],[-1,0,7,\\\"Red\\\",[]],[-2,0,7,\\\"Red\\\",[]],[-3,0,7,\\\"Red\\\",[]],[4,0,8,\\\"Red\\\",[]],[3,0,8,\\\"Red\\\",[]],[2,0,8,\\\"Red\\\",[]],[1,0,8,\\\"Red\\\",[]],[0,4,8,\\\"Red\\\",[]],[0,3,8,\\\"Red\\\",[]],[0,2,8,\\\"Red\\\",[]],[0,1,8,\\\"Red\\\",[]],[0,0,8,\\\"Brown\\\",[]],[0,-1,8,\\\"Red\\\",[]],[0,-2,8,\\\"Red\\\",[]],[0,-3,8,\\\"Red\\\",[]],[0,-4,8,\\\"Red\\\",[]],[-1,0,8,\\\"Red\\\",[]],[-2,0,8,\\\"Red\\\",[]],[-3,0,8,\\\"Red\\\",[]],[-4,0,8,\\\"Red\\\",[]],[0,0,9,\\\"Brown\\\",[\\\"S\\\"]]])"}
{"time":"2017-01-16T20:32:07.824","id":"sidaw","log":"(:q \"red branch 5; select top\")"}
{"time":"2017-01-16T20:32:08.259","id":"sidaw","log":"(:accept \"red branch 5; select top\" \"(:s (:loop (number 5) (:s (:s (:s (: add red left) (: add red right)) (: add red front)) (: add red back))) (: select (call adj top)))\")"}

View File

@ -0,0 +1,124 @@
(:def "build a red tower" "[[\"repeat 3 [ add red; select top of this]; repeat 3 [ select bot of this]\",\"(:s (:loop (number 3) (:s (: add red here) (:for (call adj top this) (: select)))) (:loop (number 3) (:for (call adj bot this) (: select))))\"],[\"select left of this\",\"(:for (call adj left this) (: select))\"]]")
(:def_ret "add 1 brown on top" "[[\"Adds 1 brown block on top of the current block\",\"(: add brown top)\"]]")
(:def_ret "add bar" "[[\"repeat 3 [ add red left ]; select left;\",\"(:s (:loop (number 3) (: add red left)) (:for (call adj left) (: select)))\"]]")
(:def_ret "standard_chair_leg" "[[\"repeat 3 [ add brown; select top of this ]; repeat 3 [ select bot of this ]\",\"(:s (:loop (number 3) (:s (: add brown here) (:for (call adj top this) (: select)))) (:loop (number 3) (:for (call adj bot this) (: select))))\"]]")
(:def_ret "standard_chair_leg" "[[\"standard_chair_leg\",\"(:blkr (:s (:loop (number 3) (:s (: add brown here) (:for (call adj top this) (: select)))) (:loop (number 3) (:for (call adj bot this) (: select)))))\"]]")
(:def_ret "chair_legs" "[[\"standard_chair_leg; repeat 3 [ select left of this]; standard_chair_leg; repeat 3 [select back of this]; standard_chair_leg; repeat 3 [ select right of this]; standard_chair_leg;\",\"(:s (:s (:blkr (:s (:loop (number 3) (:s (: add brown here) (:for (call adj top this) (: select)))) (:loop (number 3) (:for (call adj bot this) (: select))))) (:loop (number 3) (:for (call adj left this) (: select)))) (:s (:s (:s (:s (:blkr (:s (:loop (number 3) (:s (: add brown here) (:for (call adj top this) (: select)))) (:loop (number 3) (:for (call adj bot this) (: select))))) (:loop (number 3) (:for (call adj back this) (: select)))) (:blkr (:s (:loop (number 3) (:s (: add brown here) (:for (call adj top this) (: select)))) (:loop (number 3) (:for (call adj bot this) (: select)))))) (:loop (number 3) (:for (call adj right this) (: select)))) (:blkr (:s (:loop (number 3) (:s (: add brown here) (:for (call adj top this) (: select)))) (:loop (number 3) (:for (call adj bot this) (: select)))))))\"]]")
(:def_ret "standard_chair_leg" "[[\"repeat 4 [ add brown; select top of this]; repeat 4 [ select bot of this ]\",\"(:s (:loop (number 4) (:s (: add brown here) (:for (call adj top this) (: select)))) (:loop (number 4) (:for (call adj bot this) (: select))))\"]]")
(:def_ret "std_chair_leg" "[[\"repeat 4 [ add brown; select top of this]; repeat 4 [ select bot of this ]\",\"(:s (:loop (number 4) (:s (: add brown here) (:for (call adj top this) (: select)))) (:loop (number 4) (:for (call adj bot this) (: select))))\"]]")
(:def_ret "chair_legs" "[[\"std_chair_leg; repeat 3 [ select left of this]; std_chair_leg; repeat 3 [select back of this]; std_chair_leg; repeat 3 [ select right of this]; std_chair_leg;\",\"(:s (:s (:blkr (:s (:loop (number 4) (:s (: add brown here) (:for (call adj top this) (: select)))) (:loop (number 4) (:for (call adj bot this) (: select))))) (:loop (number 3) (:for (call adj left this) (: select)))) (:s (:s (:s (:s (:blkr (:s (:loop (number 4) (:s (: add brown here) (:for (call adj top this) (: select)))) (:loop (number 4) (:for (call adj bot this) (: select))))) (:loop (number 3) (:for (call adj back this) (: select)))) (:blkr (:s (:loop (number 4) (:s (: add brown here) (:for (call adj top this) (: select)))) (:loop (number 4) (:for (call adj bot this) (: select)))))) (:loop (number 3) (:for (call adj right this) (: select)))) (:blkr (:s (:loop (number 4) (:s (: add brown here) (:for (call adj top this) (: select)))) (:loop (number 4) (:for (call adj bot this) (: select)))))))\"]]")
(:def_ret "add yellow plank" "[[\"repeat 4 [ add yellow; select left of this]; repeat 4 [ select right of this ]\",\"(:s (:loop (number 4) (:s (: add yellow here) (:for (call adj left this) (: select)))) (:loop (number 4) (:for (call adj right this) (: select))))\"]]")
(:def_ret "yellow_chair_seat" "[[\"repeat 4 [ add yellow plank; select front of this]\",\"(:loop (number 4) (:s (:blkr (:s (:loop (number 4) (:s (: add yellow here) (:for (call adj left this) (: select)))) (:loop (number 4) (:for (call adj right this) (: select))))) (:for (call adj front this) (: select))))\"]]")
(:def_ret "hory_plank" "[[\"repeat 4 [ add yellow; select left]; repeat 4 [ select right]\",\"(:s (:loop (number 4) (:s (: add yellow here) (:for (call adj left) (: select)))) (:loop (number 4) (:for (call adj right) (: select))))\"]]")
(:def_ret "yellow_chair_back" "[[\"repeat 4 [ hory_plank; select top]\",\"(:loop (number 4) (:s (:blkr (:s (:loop (number 4) (:s (: add yellow here) (:for (call adj left) (: select)))) (:loop (number 4) (:for (call adj right) (: select))))) (:for (call adj top) (: select))))\"]]")
(:def_ret "add red beam" "[[\"repeat 4 [ add red; select right]; add red\",\"(:s (:loop (number 4) (:s (: add red here) (:for (call adj right) (: select)))) (: add red here))\"]]")
(:def_ret "add red beam" "[[\"repeat 4 [ add red; select right] add red\",\"(:s (:loop (number 4) (:s (: add red here) (:for (call adj right) (: select)))) (: add red here))\"]]")
(:def_ret "add blue column height 1" "[[\"repeat 1 [ add blue; select top of this]; repeat 1 [ select bot of this]\",\"(:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))\"]]")
(:def_ret "blue_pylon" "[[\"add blue column height 1; repeat 4 [ select right]; add blue column height 1;\",\"(:s (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:s (:loop (number 4) (:for (call adj right) (: select))) (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select)))))))\"]]")
(:def_ret "pylon_reset" "[[\"repeat 4 [ select left ]; repeat 2 [ select back ]\",\"(:s (:loop (number 4) (:for (call adj left) (: select))) (:loop (number 2) (:for (call adj back) (: select))))\"]]")
(:def_ret "pylr" "[[\"repeat 4 [ select left ]\",\"(:loop (number 4) (:for (call adj left) (: select)))\"]]")
(:def_ret "pyb" "[[\"repeat 2 [select back]\",\"(:loop (number 2) (:for (call adj back) (: select)))\"]]")
(:def_ret "blue_pylon height 2" "[[\"repeat 2 [ blue_pylon; pylr; select top]\",\"(:loop (number 2) (:s (:s (:blkr (:s (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:s (:loop (number 4) (:for (call adj right) (: select))) (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select)))))))) (:blkr (:loop (number 4) (:for (call adj left) (: select))))) (:for (call adj top) (: select))))\"]]")
(:def_ret "blue_pylon height 2" "[[\"repeat 2 [ blue_pylon; pylr; select top]; repeat 2 [ select bot]\",\"(:s (:loop (number 2) (:s (:s (:blkr (:s (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:s (:loop (number 4) (:for (call adj right) (: select))) (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select)))))))) (:blkr (:loop (number 4) (:for (call adj left) (: select))))) (:for (call adj top) (: select)))) (:loop (number 2) (:for (call adj bot) (: select))))\"]]")
(:def_ret "blpy" "[[\"add blue column height 1; repeat 4 [ select right]; add blue column height 1;\",\"(:s (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:blkr (:s (:loop (number 1) (:s (:s (:loop (number 4) (:for (call adj right) (: select))) (: add blue here)) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))))\"]]")
(:def_ret "blpy height 1" "[[\"repeat 1 [ blue_pylon; pylr; select top]; repeat 1 [ select bot]\",\"(:s (:loop (number 1) (:s (:s (:blkr (:s (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:s (:loop (number 4) (:for (call adj right) (: select))) (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select)))))))) (:blkr (:loop (number 4) (:for (call adj left) (: select))))) (:for (call adj top) (: select)))) (:loop (number 1) (:for (call adj bot) (: select))))\"]]")
(:def_ret "blpy height 2" "[[\"repeat 2 [ blue_pylon; pylr; select top]; repeat 2 [ select bot of this]\",\"(:s (:loop (number 2) (:s (:s (:blkr (:s (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:s (:loop (number 4) (:for (call adj right) (: select))) (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select)))))))) (:blkr (:loop (number 4) (:for (call adj left) (: select))))) (:for (call adj top) (: select)))) (:loop (number 2) (:for (call adj bot this) (: select))))\"]]")
(:def_ret "bl_a" "[[\"blpy height 1\",\"(:blkr (:s (:loop (number 1) (:s (:s (:blkr (:s (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:blkr (:s (:loop (number 1) (:s (:s (:loop (number 4) (:for (call adj right) (: select))) (: add blue here)) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))))) (:blkr (:loop (number 4) (:for (call adj left) (: select))))) (:for (call adj top) (: select)))) (:loop (number 1) (:for (call adj bot) (: select)))))\"]]")
(:def_ret "bl_b" "[[\"blpy height 2\",\"(:blkr (:s (:loop (number 2) (:s (:s (:blkr (:s (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:blkr (:s (:loop (number 1) (:s (:s (:loop (number 4) (:for (call adj right) (: select))) (: add blue here)) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))))) (:blkr (:loop (number 4) (:for (call adj left) (: select))))) (:for (call adj top) (: select)))) (:loop (number 2) (:for (call adj bot) (: select)))))\"]]")
(:def_ret "bl_c" "[[\"blpy height 3\",\"(:blkr (:s (:loop (number 3) (:s (:s (:blkr (:s (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:blkr (:s (:loop (number 1) (:s (:s (:loop (number 4) (:for (call adj right) (: select))) (: add blue here)) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))))) (:blkr (:loop (number 4) (:for (call adj left) (: select))))) (:for (call adj top) (: select)))) (:loop (number 3) (:for (call adj bot) (: select)))))\"]]")
(:def_ret "bl_d" "[[\"blpy height 4\",\"(:blkr (:s (:loop (number 4) (:s (:s (:blkr (:s (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:blkr (:s (:loop (number 1) (:s (:s (:loop (number 4) (:for (call adj right) (: select))) (: add blue here)) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))))) (:blkr (:loop (number 4) (:for (call adj left) (: select))))) (:for (call adj top) (: select)))) (:loop (number 4) (:for (call adj bot) (: select)))))\"]]")
(:def_ret "rb" "[[\"add red beam\",\"(:blkr (:s (:loop (number 4) (:s (: add red here) (:for (call adj right) (: select)))) (: add red here)))\"]]")
(:def_ret "blpy nh 1" "[[\"repeat 1 [ blue_pylon; pylr; select top]; rb; repeat 1 [ select bot]\",\"(:s (:s (:loop (number 1) (:s (:s (:blkr (:s (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:s (:loop (number 4) (:for (call adj right) (: select))) (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select)))))))) (:blkr (:loop (number 4) (:for (call adj left) (: select))))) (:for (call adj top) (: select)))) (:blkr (:blkr (:s (:loop (number 4) (:s (: add red here) (:for (call adj right) (: select)))) (: add red here))))) (:loop (number 1) (:for (call adj bot) (: select))))\"]]")
(:def "row_reset" "[[\"pyb\",\"(:blkr (:loop (number 2) (:for (call adj back) (: select))))\"],[\"pylr\",\"(:blkr (:loop (number 4) (:for (call adj left) (: select))))\"]]")
(:def_ret "row_reset" "[[\"pyb; pylr\",\"(:s (:blkr (:loop (number 2) (:for (call adj back) (: select)))) (:blkr (:loop (number 4) (:for (call adj left) (: select)))))\"]]")
(:def "blue_bench" "[[\"blpy nh 1\",\"(:blkr (:s (:s (:loop (number 1) (:s (:s (:blkr (:s (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:s (:loop (number 4) (:for (call adj right) (: select))) (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select)))))))) (:blkr (:loop (number 4) (:for (call adj left) (: select))))) (:for (call adj top) (: select)))) (:blkr (:blkr (:s (:loop (number 4) (:s (: add red here) (:for (call adj right) (: select)))) (: add red here))))) (:loop (number 1) (:for (call adj bot) (: select)))))\"],[\"pyb\",\"(:blkr (:loop (number 2) (:for (call adj back) (: select))))\"],[\"pylr\",\"(:blkr (:loop (number 4) (:for (call adj left) (: select))))\"],[\"blpy nh 2\",\"(:blkr (:s (:s (:loop (number 2) (:s (:s (:blkr (:s (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:s (:loop (number 4) (:for (call adj right) (: select))) (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select)))))))) (:blkr (:loop (number 4) (:for (call adj left) (: select))))) (:for (call adj top) (: select)))) (:blkr (:blkr (:s (:loop (number 4) (:s (: add red here) (:for (call adj right) (: select)))) (: add red here))))) (:loop (number 2) (:for (call adj bot) (: select)))))\"],[\"row_reset\",\"(:blkr (:s (:blkr (:loop (number 2) (:for (call adj back) (: select)))) (:blkr (:loop (number 4) (:for (call adj left) (: select))))))\"],[\"blpy nh 3\",\"(:blkr (:s (:s (:loop (number 3) (:s (:s (:blkr (:s (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:s (:loop (number 4) (:for (call adj right) (: select))) (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select)))))))) (:blkr (:loop (number 4) (:for (call adj left) (: select))))) (:for (call adj top) (: select)))) (:blkr (:blkr (:s (:loop (number 4) (:s (: add red here) (:for (call adj right) (: select)))) (: add red here))))) (:loop (number 3) (:for (call adj bot) (: select)))))\"],[\"row_reset\",\"(:blkr (:s (:blkr (:loop (number 2) (:for (call adj back) (: select)))) (:blkr (:loop (number 4) (:for (call adj left) (: select))))))\"],[\"blpy nh 4\",\"(:blkr (:s (:s (:loop (number 4) (:s (:s (:blkr (:s (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:s (:loop (number 4) (:for (call adj right) (: select))) (:blkr (:s (:loop (number 1) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select)))))))) (:blkr (:loop (number 4) (:for (call adj left) (: select))))) (:for (call adj top) (: select)))) (:blkr (:blkr (:s (:loop (number 4) (:s (: add red here) (:for (call adj right) (: select)))) (: add red here))))) (:loop (number 4) (:for (call adj bot) (: select)))))\"]]")
(:def_ret "orange_pylon" "[[\"add orange column height 1; repeat 4 [ select right]; add orange column height 1;\",\"(:s (:blkr (:s (:loop (number 1) (:s (: add orange here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:blkr (:s (:loop (number 1) (:s (:s (:loop (number 4) (:for (call adj right) (: select))) (: add orange here)) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))))\"]]")
(:def_ret "opy height 1" "[[\"repeat 1 [ orange_pylon; pylr; select top]; rb; repeat 1 [ select bot]\",\"(:s (:s (:loop (number 1) (:s (:s (:blkr (:s (:blkr (:s (:loop (number 1) (:s (: add orange here) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))) (:blkr (:s (:loop (number 1) (:s (:s (:loop (number 4) (:for (call adj right) (: select))) (: add orange here)) (:for (call adj top this) (: select)))) (:loop (number 1) (:for (call adj bot this) (: select))))))) (:blkr (:loop (number 4) (:for (call adj left) (: select))))) (:for (call adj top) (: select)))) (:blkr (:blkr (:s (:loop (number 4) (:s (: add red here) (:for (call adj right) (: select)))) (: add red here))))) (:loop (number 1) (:for (call adj bot) (: select))))\"]]")
(:def_ret "grn height 1" "[[\"add green; add green bot; add green top\",\"(:s (:s (: add green here) (: add green bot)) (: add green top))\"]]")
(:def_ret "add green height 3" "[[\"repeat 3 [add green; select top]; repeat 3 [select bot]\",\"(:s (:loop (number 3) (:s (: add green here) (:for (call adj top) (: select)))) (:loop (number 3) (:for (call adj bot) (: select))))\"]]")
(:def_ret "add next row back" "[[\"select back; add orange; add orange left; add orange left; add orange left; add orange left; add orange left\",\"(:s (:s (:s (:s (:s (:s (:for (call adj back) (: select)) (: add orange here)) (: add orange left)) (: add orange left)) (: add orange left)) (: add orange left)) (: add orange left))\"]]")
(:def_ret "add red row back" "[[\"select back; add red; add red left; add red left; add red left;\",\"(:s (:s (:s (:s (:for (call adj back) (: select)) (: add red here)) (: add red left)) (: add red left)) (: add red left))\"]]")
(:def_ret "add yellow row" "[[\"add yellow; add yellow left; add yellow left; add yellow left\",\"(:s (:s (:s (: add yellow here) (: add yellow left)) (: add yellow left)) (: add yellow left))\"]]")
(:def_ret "add yellow row" "[[\"add yellow; add yellow left; add yellow left; add yellow left;\",\"(:s (:s (:s (: add yellow left) (: add yellow left)) (: add yellow left)) (: add yellow here))\"]]")
(:def_ret "add yrow" "[[\"add yellow; add yellow left; add yellow left; add yellow left;\",\"(:s (:s (:s (: add yellow left) (: add yellow left)) (: add yellow left)) (: add yellow here))\"]]")
(:def "add green branch 1" "[[\"add 1 green left\",\"(: add green left)\"],[\"add 1 green right\",\"(: add green right)\"]]")
(:def "add green branch 2" "[[\"repeat 2 [add green left]\",\"(:loop (number 2) (: add green left))\"],[\"repeat 2 [add green right]\",\"(:loop (number 2) (: add green right))\"]]")
(:def "create orange step height one" "[[\"repeat 1 [add orange]\",\"(:loop (number 1) (: add orange here))\"],[\"add red top\",\"(: add red top)\"],[\"select top\",\"(:for (call adj top) (: select))\"],[\"repeat 4 [add red right]\",\"(:loop (number 4) (: add red right))\"],[\"select right 4\",\"(:loop (number 4) (:for (call adj right) (: select)))\"],[\"repeat 1 [add orange bot]\",\"(:loop (number 1) (: add orange bot))\"]]")
(:def "add brown tower 4" "[[\"add brown\",\"(: add brown here)\"],[\"repeat 4-1 [add brown top]\",\"(:loop (- (number 4) (number 1)) (: add brown top))\"]]")
(:def "add brown tower height 4" "[[\"add brown\",\"(: add brown here)\"],[\"repeat 4-1 [add brown top]\",\"(:loop (- (number 4) (number 1)) (: add brown top))\"]]")
(:def "create orange step height 1" "[[\"add orange\",\"(: add orange here)\"],[\"repeat 1-1 [add orange top]\",\"(:loop (- (number 1) (number 1)) (: add orange top))\"],[\"add red top\",\"(: add red top)\"],[\"select red\",\"(:foreach (color red) (: select))\"],[\"repeat 4 [add red right]\",\"(:loop (number 4) (: add red right))\"],[\"select right 4\",\"(:loop (number 4) (:for (call adj right) (: select)))\"],[\"repeat 1 [add orange bot]\",\"(:loop (number 1) (: add orange bot))\"]]")
(:def "create orange tower 3" "[[\"add orange\",\"(: add orange here)\"],[\"repeat 3-1 [add orange top]\",\"(:loop (- (number 3) (number 1)) (: add orange top))\"]]")
(:def "add red step" "[[\"add red top\",\"(: add red top)\"],[\"select top\",\"(:for (call adj top) (: select))\"],[\"repeat 4 [add red left]\",\"(:loop (number 4) (: add red left))\"]]")
(:def_ret "add row 5 left red" "[[\"repeat 5[add red; select left of this];\",\"(:loop (number 5) (:s (: add red here) (:for (call adj left this) (: select))))\"]]")
(:def "select left and down" "[[\"select left\",\"(:for (call adj left) (: select))\"],[\"select bot\",\"(:for (call adj bot) (: select))\"]]")
(:def "select left and bot" "[[\"select bot\",\"(:for (call adj bot) (: select))\"],[\"select left\",\"(:for (call adj left) (: select))\"]]")
(:def_ret "add red row 5 left" "[[\"repeat 5 [add red; select left]; select bot\",\"(:s (:loop (number 5) (:s (: add red here) (:for (call adj left) (: select)))) (:for (call adj bot) (: select)))\"]]")
(:def "add blue up 2" "[[\"repeat 2 [add blue; select top of this]\",\"(:loop (number 2) (:s (: add blue here) (:for (call adj top this) (: select))))\"],[\"select bot\",\"(:for (call adj bot) (: select))\"],[\"select bot\",\"(:for (call adj bot) (: select))\"]]")
(:def_ret "add blue up 2" "[[\"repeat 2[add blue; select top of this]\",\"(:loop (number 2) (:s (: add blue here) (:for (call adj top this) (: select))))\"]]")
(:def_ret "select top of this" "[[\"repeat 4[select top]\",\"(:loop (number 4) (:for (call adj top) (: select)))\"]]")
(:def "select very bot 5 right" "[[\"repeat 3[select bot]\",\"(:loop (number 3) (:for (call adj bot) (: select)))\"],[\"repeat 5[select right]\",\"(:loop (number 5) (:for (call adj right) (: select)))\"]]")
(:def "select very bot 5 right" "[[\"repeat 5[select right]\",\"(:loop (number 5) (:for (call adj right) (: select)))\"],[\"repeat 3[select bot]\",\"(:loop (number 3) (:for (call adj bot) (: select)))\"]]")
(:def "select top of this" "[[\"select top\",\"(:for (call adj top) (: select))\"],[\"select top\",\"(:for (call adj top) (: select))\"],[\"add red row 5 left\",\"(:blkr (:s (:loop (number 5) (:s (: add red here) (:for (call adj left) (: select)))) (:for (call adj bot) (: select))))\"]]")
(:def "create red bench with blue legs 1 tall" "[[\"add blue\",\"(: add blue here)\"],[\"select left 4\",\"(:loop (number 4) (:for (call adj left) (: select)))\"],[\"add blue\",\"(: add blue here)\"],[\"select top of this\",\"(:for (call adj top this) (: select))\"],[\"add red row 5 right\",\"(:blkr (:s (:loop (number 5) (:s (: add red here) (:for (call adj right) (: select)))) (:for (call adj bot) (: select))))\"],[\"select left\",\"(:for (call adj left) (: select))\"]]")
(:def "create red bench with blue legs 2 tall" "[[\"repeat 2 [add blue; select top]\",\"(:loop (number 2) (:s (: add blue here) (:for (call adj top) (: select))))\"],[\"add red row 5 left\",\"(:blkr (:s (:loop (number 5) (:s (: add red here) (:for (call adj left) (: select)))) (:for (call adj bot) (: select))))\"],[\"select right\",\"(:for (call adj right) (: select))\"],[\"repeat 2[add blue; select bot]\",\"(:loop (number 2) (:s (: add blue here) (:for (call adj bot) (: select))))\"]]")
(:def "select orange right" "[[\"select orange\",\"(:foreach (color orange) (:blkr))\"],[\"repeat 4[select right]\",\"(:loop (number 4) (:for (call adj right) (: select)))\"]]")
(:def_ret "select orange right" "[[\"select orange\",\"(:foreach (color orange) (:blkr))\"]]")
(:def "select orange right" "[[\"select orange\",\"(:foreach (color orange) (:blkr))\"],[\"repeat 4[select right]\",\"(:loop (number 4) (:for (call adj right) (: select)))\"]]")
(:def_ret "add blue tower" "[[\"add blue top 3 times\",\"(:loop (number 3) (: add blue top))\"]]")
(:def_ret "add big red cube" "[]")
(:def_ret "add red line" "[[\"repeat 3 [ add red; select back of this ]\",\"(:loop (number 3) (:s (: add red here) (:for (call adj back this) (: select))))\"]]")
(:def_ret "add yellow row" "[[\"add yellow 3 times to right\",\"(:foreach (call adj right) (: add yellow here))\"]]")
(:def_ret "add brown tower" "[[\"add brown top 4 times\",\"(:loop (number 4) (: add brown top))\"]]")
(:def_ret "add brown tower" "[[\"add brown top 3 times\",\"(:loop (number 3) (: add brown top))\"]]")
(:def "add red column" "[[\"add red\",\"(: add red here)\"],[\"add red top\",\"(: add red top)\"],[\"add red top\",\"(: add red top)\"]]")
(:def_ret "add red column height 3" "[[\"repeat 3 [ add red; select top of this ]\",\"(:loop (number 3) (:s (: add red here) (:for (call adj top this) (: select))))\"]]")
(:def_ret "add red column height 3" "[[\"repeat 3 [ add red; select top of this ]; repeat 3 [select bot of this ]\",\"(:s (:loop (number 3) (:s (: add red here) (:for (call adj top this) (: select)))) (:loop (number 3) (:for (call adj bot this) (: select))))\"]]")
(:def_ret "red plate 3" "[[\"repeat 3 [ add red column height 3; select left of this ]\",\"(:loop (number 3) (:s (:blkr (:s (:loop (number 3) (:s (: add red here) (:for (call adj top this) (: select)))) (:loop (number 3) (:for (call adj bot this) (: select))))) (:for (call adj left this) (: select))))\"]]")
(:def_ret "red cube 3" "[[\"repeat 3 [ red plate 3; repeat 3 [ select right of this]; select back of this ]\",\"(:loop (number 3) (:s (:s (:blkr (:loop (number 3) (:s (:blkr (:s (:loop (number 3) (:s (: add red here) (:for (call adj top this) (: select)))) (:loop (number 3) (:for (call adj bot this) (: select))))) (:for (call adj left this) (: select))))) (:loop (number 3) (:for (call adj right this) (: select)))) (:for (call adj back this) (: select))))\"]]")
(:def_ret "add blue column 2" "[[\"add blue bot 2 times\",\"(:loop (number 2) (: add blue bot))\"]]")
(:def_ret "add red plate 5" "[[\"add red; add red right 4 times\",\"(:loop (number 4) (:s (: add red here) (: add red right)))\"]]")
(:def_ret "add brown column height 3" "[[\"repeat 3 [add brown; select top of this]\",\"(:loop (number 3) (:s (: add brown here) (:for (call adj top this) (: select))))\"]]")
(:def "build 1" "[[\"add red to top\",\"(:foreach (call adj top) (: add red here))\"],[\"add red line to left; select left; select left; select left; select left\",\"(:s (:s (:s (:s (:for (call adj left) (: select)) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:blk (:foreach (call adj right) (: add red here)) (:loop (number 3) (:blkr (:foreach (call adj right) (: add red here))))))\"],[\"add red; add blue bot; select right; select right; select right; select right; select bot\",\"(:s (:s (:s (:s (:s (:s (: add red here) (: add blue bot)) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (:for (call adj bot) (: select)))\"]]")
(:def "2 block orange" "[[\"select right; select right; add orange; add orange top; select top\",\"(:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (: add orange here)) (: add orange top)) (:for (call adj top) (: select)))\"],[\"add red top; select top; add red line to right; select right; select right; select right; select right; add orange bot; add orange bot\",\"(:s (:s (:s (: add red top) (:for (call adj top) (: select))) (:blk (:foreach (call adj right) (: add red here)) (:loop (number 3) (:blkr (:foreach (call adj right) (: add red here)))))) (:s (:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (: add orange bot)) (: add orange bot)))\"],[\"select left; select left; select left; select left; select bot; select bot\",\"(:s (:s (:s (:s (:s (:for (call adj left) (: select)) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj bot) (: select))) (:for (call adj bot) (: select)))\"]]")
(:def "orange 2" "[[\"select right; select right; add orange; add orange top; select top\",\"(:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (: add orange here)) (: add orange top)) (:for (call adj top) (: select)))\"],[\"add red top; select top; add red line to right; select right; select right; select right; select right; add orange bot; add orange bot\",\"(:s (:s (:s (: add red top) (:for (call adj top) (: select))) (:blk (:foreach (call adj right) (: add red here)) (:loop (number 3) (:blkr (:foreach (call adj right) (: add red here)))))) (:s (:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (: add orange bot)) (: add orange bot)))\"],[\"select left; select left; select left; select left; select bot; select bot\",\"(:s (:s (:s (:s (:s (:for (call adj left) (: select)) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj bot) (: select))) (:for (call adj bot) (: select)))\"]]")
(:def "2 block orange" "[[\"select right; select right; add orange; add orange top; select top\",\"(:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (: add orange here)) (: add orange top)) (:for (call adj top) (: select)))\"],[\"add red top; select top; add red line to right; select right; select right; select right; select right; add orange bot; add orange bot\",\"(:s (:s (:s (: add red top) (:for (call adj top) (: select))) (:blk (:foreach (call adj right) (: add red here)) (:loop (number 3) (:blkr (:foreach (call adj right) (: add red here)))))) (:s (:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (: add orange bot)) (: add orange bot)))\"],[\"select left; select left; select left; select left; select bot; select bot\",\"(:s (:s (:s (:s (:s (:for (call adj left) (: select)) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj bot) (: select))) (:for (call adj bot) (: select)))\"]]")
(:def "orange 2" "[[\"select right; select right; add orange; add orange top; select top\",\"(:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (: add orange here)) (: add orange top)) (:for (call adj top) (: select)))\"],[\"add red top; select top; add red line to right; select right; select right; select right; select right; add orange bot; add orange bot\",\"(:s (:s (:s (: add red top) (:for (call adj top) (: select))) (:blk (:foreach (call adj right) (: add red here)) (:loop (number 3) (:blkr (:foreach (call adj right) (: add red here)))))) (:s (:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (: add orange bot)) (: add orange bot)))\"],[\"select left; select left; select left; select left; select bot; select bot\",\"(:s (:s (:s (:s (:s (:for (call adj left) (: select)) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj bot) (: select))) (:for (call adj bot) (: select)))\"]]")
(:def "2 block orange" "[[\"select right; select right; add orange; add orange top; select top\",\"(:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (: add orange here)) (: add orange top)) (:for (call adj top) (: select)))\"],[\"add red top; select top; add red line to right; select right; select right; select right; select right; add orange bot; add orange bot\",\"(:s (:s (:s (: add red top) (:for (call adj top) (: select))) (:blk (:foreach (call adj right) (: add red here)) (:loop (number 3) (:blkr (:foreach (call adj right) (: add red here)))))) (:s (:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (: add orange bot)) (: add orange bot)))\"],[\"select left; select left; select left; select left; select bot; select bot\",\"(:s (:s (:s (:s (:s (:for (call adj left) (: select)) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj bot) (: select))) (:for (call adj bot) (: select)))\"]]")
(:def "orange 2" "[[\"select right; select right; add orange; add orange top; select top\",\"(:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (: add orange here)) (: add orange top)) (:for (call adj top) (: select)))\"],[\"add red top; select top; add red line to right; select right; select right; select right; select right; add orange bot; add orange bot\",\"(:s (:s (:s (: add red top) (:for (call adj top) (: select))) (:blk (:foreach (call adj right) (: add red here)) (:loop (number 3) (:blkr (:foreach (call adj right) (: add red here)))))) (:s (:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (: add orange bot)) (: add orange bot)))\"],[\"select left; select left; select left; select left; select bot; select bot\",\"(:s (:s (:s (:s (:s (:for (call adj left) (: select)) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj bot) (: select))) (:for (call adj bot) (: select)))\"]]")
(:def "2 block orange" "[[\"select right; select right; add orange; add orange top; select top\",\"(:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (: add orange here)) (: add orange top)) (:for (call adj top) (: select)))\"],[\"add red top; select top; add red line to right; select right; select right; select right; select right; add orange bot; add orange bot\",\"(:s (:s (:s (: add red top) (:for (call adj top) (: select))) (:blk (:foreach (call adj right) (: add red here)) (:loop (number 3) (:blkr (:foreach (call adj right) (: add red here)))))) (:s (:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (: add orange bot)) (: add orange bot)))\"],[\"select left; select left; select left; select left; select bot; select bot\",\"(:s (:s (:s (:s (:s (:for (call adj left) (: select)) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj bot) (: select))) (:for (call adj bot) (: select)))\"]]")
(:def "orange 2" "[[\"select right; select right; add orange; add orange top; select top\",\"(:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (: add orange here)) (: add orange top)) (:for (call adj top) (: select)))\"],[\"add red top; select top; add red line to right; select right; select right; select right; select right; add orange bot; add orange bot\",\"(:s (:s (:s (: add red top) (:for (call adj top) (: select))) (:blk (:foreach (call adj right) (: add red here)) (:loop (number 3) (:blkr (:foreach (call adj right) (: add red here)))))) (:s (:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (: add orange bot)) (: add orange bot)))\"],[\"select left; select left; select left; select left; select bot; select bot\",\"(:s (:s (:s (:s (:s (:for (call adj left) (: select)) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj bot) (: select))) (:for (call adj bot) (: select)))\"]]")
(:def "2 block orange" "[[\"select right; select right; add orange; add orange top; select top\",\"(:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (: add orange here)) (: add orange top)) (:for (call adj top) (: select)))\"],[\"add red top; select top; add red line to right; select right; select right; select right; select right; add orange bot; add orange bot\",\"(:s (:s (:s (: add red top) (:for (call adj top) (: select))) (:blk (:foreach (call adj right) (: add red here)) (:loop (number 3) (:blkr (:foreach (call adj right) (: add red here)))))) (:s (:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (: add orange bot)) (: add orange bot)))\"],[\"select left; select left; select left; select left; select bot; select bot\",\"(:s (:s (:s (:s (:s (:for (call adj left) (: select)) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj bot) (: select))) (:for (call adj bot) (: select)))\"]]")
(:def "orange 2" "[[\"select right; select right; add orange; add orange top; select top\",\"(:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (: add orange here)) (: add orange top)) (:for (call adj top) (: select)))\"],[\"add red top; select top; add red line to right; select right; select right; select right; select right; add orange bot; add orange bot\",\"(:s (:s (:s (: add red top) (:for (call adj top) (: select))) (:blk (:foreach (call adj right) (: add red here)) (:loop (number 3) (:blkr (:foreach (call adj right) (: add red here)))))) (:s (:s (:s (:s (:s (:for (call adj right) (: select)) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (:for (call adj right) (: select))) (: add orange bot)) (: add orange bot)))\"],[\"select left; select left; select left; select left; select bot; select bot\",\"(:s (:s (:s (:s (:s (:for (call adj left) (: select)) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj left) (: select))) (:for (call adj bot) (: select))) (:for (call adj bot) (: select)))\"]]")
(:def_ret "add brown tower" "[[\"add brown top 10 times\",\"(:loop (number 10) (: add brown top))\"]]")
(:def_ret "add brown tower" "[[\"add brown top 9 times\",\"(:loop (number 9) (: add brown top))\"]]")
(:def_ret "add green to left " "[[\"add green to right\",\"(:foreach (call adj right) (: add green here))\"]]")
(:def "add green tower" "[[\"add green top 2 times\",\"(:loop (number 2) (: add green top))\"],[\"select top of this \",\"(:for (call adj top this) (: select))\"],[\"add green to right\",\"(:foreach (call adj right) (: add green here))\"],[\"select left of this\",\"(:for (call adj left this) (: select))\"],[\"select bottom of this\",\"(:foreach this (: select))\"]]")
(:def "add green tower" "[[\"add green top 6 times \",\"(:loop (number 6) (: add green top))\"],[\"add green to right\",\"(:foreach (call adj right) (: add green here))\"],[\"add green top 5 times\",\"(:loop (number 5) (: add green top))\"],[\"add green to right\",\"(:foreach (call adj right) (: add green here))\"]]")
(:def_ret "add green tower " "[[\"add green top 6 times\",\"(:loop (number 6) (: add green top))\"]]")
(:def_ret "add green tower" "[[\"add green top 6 times\",\"(:loop (number 6) (: add green top))\"]]")
(:def "add brown tower" "[[\"add brown top 9 times\",\"(:loop (number 9) (: add brown top))\"],[\"select top\",\"(:for (call adj top) (: select))\"]]")
(:def_ret "add green tower" "[[\"add green top 6 times\",\"(:loop (number 6) (: add green top))\"]]")
(:def_ret "add green tower" "[[\"add green top 5 times\",\"(:loop (number 5) (: add green top))\"]]")
(:def_ret "add green tower" "[[\"do 3 times add green top\",\"(:loop (number 3) (: add green top))\"]]")
(:def_ret "add green tower" "[[\"add green top 2 times\",\"(:loop (number 2) (: add green top))\"]]")
(:def_ret "add green to left " "[[\"add green left\",\"(: add green left)\"]]")
(:def "select left" "[[\"add green left\",\"(: add green left)\"],[\"select left\",\"(:for (call adj left) (: select))\"]]")
(:def "add green line" "[[\"add green to right\",\"(:foreach (call adj right) (: add green here))\"],[\"add green row to right; length 3\",\"(:loop (number 3) (:blkr (:foreach (call adj right) (: add green here))))\"]]")
(:def "add orange row 6 left" "[[\"repeat 6 [add orange square; select left of this;]\",\"(:s (: add orange here) (:for (call adj left this) (: select)))\"],[\"repeat 6 [add orange; select left of this;]\",\"(:loop (number 6) (:s (: add orange here) (:for (call adj left this) (: select))))\"]]")
(:def_ret "add orange row size 6 left" "[[\"repeat 6 [add orange; select left of this;]\",\"(:loop (number 6) (:s (: add orange here) (:for (call adj left this) (: select))))\"]]")
(:def_ret "add orange row 6 left;" "[[\"repeat 6 [add orange; select left of this]; repeat 6 [select right of this]\",\"(:s (:loop (number 6) (:s (: add orange here) (:for (call adj left this) (: select)))) (:loop (number 6) (:for (call adj right this) (: select))))\"]]")
(:def_ret "add orange row 6 left;" "[[\"repeat 6 [add orange; select left of this];\",\"(:loop (number 6) (:s (: add orange here) (:for (call adj left this) (: select))))\"]]")
(:def_ret "add left orange square length 6" "[[\"select front of this; repeat 6 [select back of this; add orange row 6 left;]\",\"(:s (:for (call adj front this) (: select)) (:loop (number 6) (:s (:for (call adj back this) (: select)) (:blkr (:s (:loop (number 6) (:s (: add orange here) (:for (call adj left this) (: select)))) (:loop (number 6) (:for (call adj right this) (: select))))))))\"]]")
(:def_ret "add red tower" "[[\"add red tower 2 blocks\",\"(:loop (number 2) (: add red here))\"]]")
(:def "add red tower" "[[\"add red top 2 times\",\"(:loop (number 2) (: add red top))\"],[\"add red block top\",\"(:foreach (call adj top) (: add red here))\"]]")
(:def_ret "Build Leftredbeam" "[[\"repeat 5 [add red; select left of this]; select right of this\",\"(:s (:loop (number 5) (:s (: add red here) (:for (call adj left this) (: select)))) (:for (call adj right this) (: select)))\"]]")
(:def_ret "select" "[]")
(:def_ret "build redrowleft" "[[\"repeat 5[add red; select left]; select right; select bot\",\"(:s (:s (:loop (number 5) (:s (: add red here) (:for (call adj left) (: select)))) (:for (call adj right) (: select))) (:for (call adj bot) (: select)))\"]]")
(:def_ret "build moveback" "[[\"repeat 4[select right]\",\"(:loop (number 4) (:for (call adj right) (: select)))\"]]")
(:def "build arch" "[[\"add orange\",\"(: add orange here)\"],[\"select top\",\"(:for (call adj top) (: select))\"],[\"select left\",\"(:for (call adj left) (: select))\"],[\"add red row length 5\",\"(:loop (number 5) (:blkr (:foreach (call adj right) (: add red here))))\"],[\"select bot\",\"(:for (call adj bot) (: select))\"],[\"add orange\",\"(: add orange here)\"]]")
(:def "build legs 1" "[[\"add blue\",\"(: add blue here)\"],[\"select right 4\",\"(:loop (number 4) (:for (call adj right) (: select)))\"],[\"add blue\",\"(: add blue here)\"],[\"select right 2\",\"(:loop (number 2) (:for (call adj right) (: select)))\"],[\"add orange\",\"(: add orange here)\"],[\"select right 4\",\"(:loop (number 4) (:for (call adj right) (: select)))\"],[\"add orange\",\"(: add orange here)\"]]")
(:def "build beams" "[[\"add red row length 5\",\"(:loop (number 5) (:blkr (:foreach (call adj right) (: add red here))))\"],[\"select right\",\"(:for (call adj right) (: select))\"],[\"add red row length 5\",\"(:loop (number 5) (:blkr (:foreach (call adj right) (: add red here))))\"],[\"select left 10\",\"(:loop (number 10) (:for (call adj left) (: select)))\"],[\"select bot\",\"(:for (call adj bot) (: select))\"],[\"select back 2\",\"(:loop (number 2) (:for (call adj back) (: select)))\"]]")
(:def "build resetrow" "[[\"select right\",\"(:for (call adj right) (: select))\"],[\"select right 10\",\"(:loop (number 10) (:for (call adj right) (: select)))\"],[\"select bot\",\"(:for (call adj bot) (: select))\"],[\"select back 2\",\"(:loop (number 2) (:for (call adj back) (: select)))\"]]")
(:def "build legs2" "[[\"add orange column height 2\",\"(:blkr (:s (:loop (number 2) (:s (: add orange here) (:for (call adj top this) (: select)))) (:loop (number 2) (:for (call adj bot this) (: select)))))\"],[\"select left 4\",\"(:loop (number 4) (:for (call adj left) (: select)))\"],[\"add orange column height 2\",\"(:blkr (:s (:loop (number 2) (:s (: add orange here) (:for (call adj top this) (: select)))) (:loop (number 2) (:for (call adj bot this) (: select)))))\"],[\"select left 2\",\"(:loop (number 2) (:for (call adj left) (: select)))\"],[\"add blue column height 2\",\"(:blkr (:s (:loop (number 2) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 2) (:for (call adj bot this) (: select)))))\"],[\"select left 4\",\"(:loop (number 4) (:for (call adj left) (: select)))\"],[\"add blue column height 2\",\"(:blkr (:s (:loop (number 2) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 2) (:for (call adj bot this) (: select)))))\"]]")
(:def "build legs 3" "[[\"add orange column height 3\",\"(:blkr (:s (:loop (number 3) (:s (: add orange here) (:for (call adj top this) (: select)))) (:loop (number 3) (:for (call adj bot this) (: select)))))\"],[\"select left 4\",\"(:loop (number 4) (:for (call adj left) (: select)))\"],[\"add orange column height 3\",\"(:blkr (:s (:loop (number 3) (:s (: add orange here) (:for (call adj top this) (: select)))) (:loop (number 3) (:for (call adj bot this) (: select)))))\"],[\"select left 2\",\"(:loop (number 2) (:for (call adj left) (: select)))\"],[\"add blue column height 3\",\"(:blkr (:s (:loop (number 3) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 3) (:for (call adj bot this) (: select)))))\"],[\"select left 4\",\"(:loop (number 4) (:for (call adj left) (: select)))\"],[\"add blue column height 3\",\"(:blkr (:s (:loop (number 3) (:s (: add blue here) (:for (call adj top this) (: select)))) (:loop (number 3) (:for (call adj bot this) (: select)))))\"]]")
(:def "build legs4" "[[\"add orange column 4\",\"(:blkr (:loop (number 4) (: add orange bot)))\"],[\"select left 4\",\"(:loop (number 4) (:for (call adj left) (: select)))\"],[\"add orange column 4\",\"(:blkr (:loop (number 4) (: add orange bot)))\"],[\"select left 2\",\"(:loop (number 2) (:for (call adj left) (: select)))\"],[\"add blue column 4\",\"(:blkr (:loop (number 4) (: add blue bot)))\"],[\"select left 4\",\"(:loop (number 4) (:for (call adj left) (: select)))\"],[\"add blue column 4\",\"(:blkr (:loop (number 4) (: add blue bot)))\"],[\"select left\",\"(:for (call adj left) (: select))\"],[\"build beams\",\"(:blk (:loop (number 5) (:blkr (:foreach (call adj right) (: add red here)))) (:for (call adj right) (: select)) (:loop (number 5) (:blkr (:foreach (call adj right) (: add red here)))) (:loop (number 10) (:for (call adj left) (: select))) (:for (call adj bot) (: select)) (:loop (number 2) (:for (call adj back) (: select))))\"]]")

View File

@ -1,200 +0,0 @@
# contextful top level functions
(def @root context:root)
(def @iff iff)
# actions
(def @add add)
(def @remove remove)
# action combinator
(def @seq seq)
(def @repeat repeat)
# cond and their combinator
(def @topColor top)
(def @contains has)
(def @all all)
(def @none none)
(def @compare compare)
(def @not not)
(def @combine logic)
# numbers and their operators
(def @get get)
(def @constant constant)
(def @negative negative)
(def @arith arith)
(def @rect context:rect)
(def @shift context:shift)
(def @argmin context:argmin)
(def @argmax context:argmax)
# mark
(def @mark context:mark)
(def @unmark context:unmark)
(def @marked marked)
# This grammar should have Rule.defaultIsFloating false
# TO TEST
# (context (graph NaiveKnowledgeGraph ((string [[1,2,3,4],[4,3,1],[2,2,1],[2,2,3],[3],[]]) (name b) (name c))))
# (set JavaExecutor.printStackTrace true)
####### Start of the actual grammar
(rule $ROOT ($ActionSeq) (lambda a (call @root (var a))) (anchored 1)) # process for better
(rule $Action ($ActionSeq if $CondSeq) (lambda a (lambda c (call @iff (var c) (var a)))) (anchored 1))
# combo actions
(rule $ActionSeq ($ActionSeq then $Action) (lambda a1 (lambda a2 (call @seq (var a1) (var a2)))) (anchored 1))
(rule $Action (repeat $ActionSeq $NumberSeq times) (lambda a (lambda n (call @repeat (var n) (var a)))) (anchored 1))
(rule $ActionSeq ($Action) (IdentityFn) (anchored 1))
(rule $Action ([ $ActionSeq ]) (IdentityFn) (anchored 1))
# combo conditions
(for @op (or and)
(rule $CondSeq ($CondSeq @op $Cond) (lambda c1 (lambda c2
(call @combine (string @op) (var c1) (var c2)))) (anchored 1))
)
(rule $Cond (not $CondSeq) (lambda c (call @not (var c))) (anchored 1))
(rule $CondSeq ($Cond) (IdentityFn) (anchored 1))
(rule $Cond ([ $CondSeq ]) (IdentityFn) (anchored 1))
(rule $Action (remove) (ConstantFn (call @remove)) (anchored 1))
(rule $Action (add $Color) (lambda t (call @add (var t))) (anchored 1))
(rule $Action ( mark $CondSeq )
(lambda c (call @mark (var c) )) (anchored 1))
(rule $Action ( unmark $CondSeq )
(lambda c (call @unmark (var c))) (anchored 1))
(rule $Cond (marked)
(ConstantFn (call @marked)) (anchored 1))
(rule $Action ( select $CondSeq )
(lambda c (call @mark (var c) )) (anchored 1))
(rule $Action ( unselect $CondSeq )
(lambda c (call @unmark (var c))) (anchored 1))
(rule $Cond (selected)
(ConstantFn (call @marked)) (anchored 1))
# basic conditions
(rule $Cond (has $Color) (lambda t
(call @contains (var t))) (anchored 1))
(rule $Cond (top $Color) (lambda t
(call @topColor (var t))) (anchored 1))
(rule $Cond (all) (ConstantFn
(call @all)) (anchored 1))
(rule $Cond (none) (ConstantFn
(call @none)) (anchored 1))
########### number stuff
(for @num (0 1 2 3 4 5 6 7 8 9)
(rule $Number (@num) (ConstantFn (call @constant (number @num))) (anchored 1))
)
(rule $Number (many) (ConstantFn (call @constant (number 10 infty))) (anchored 1))
(for @property (col row height)
(rule $Number (@property) (ConstantFn (call @get (string @property))) (anchored 1))
)
(for @op (+ - %)
(rule $NumberSeq ($NumberSeq @op $Number) (lambda n1 (lambda n2
(call @arith (string @op) (var n1) (var n2)))) (anchored 1))
)
(rule $Number ([ $NumberSeq ]) (IdentityFn) (anchored 1))
(rule $NumberSeq ( $Number ) (IdentityFn) (anchored 1))
(for @rel (> >= = < <=)
(rule $Cond ($NumberSeq @rel $NumberSeq) (lambda n1 (lambda n2
(call @compare (var n1) (string @rel) (var n2)))) (anchored 1))
)
########### context stuff
# relative stuff
(rule $Cond (argmin \( $CondSeq , $NumberSeq \) ) (lambda c (lambda n (call @argmin (var c) (var n))) (anchored 1)))
(rule $Cond (argmax \( $CondSeq , $NumberSeq \) ) (lambda c (lambda n (call @argmax (var c) (var n))) (anchored 1)))
(rule $Cond (inside $CondSeq ) (lambda c (call @rect (var c))) (anchored 1))
(rule $Cond (smallest $NumberSeq in $CondSeq ) (lambda n (lambda c (call @argmin (var c) (var n)))) (anchored 1))
(rule $Cond (largest $NumberSeq in $CondSeq ) (lambda n (lambda c (call @argmax (var c) (var n)))) (anchored 1))
(rule $Cond (smallest $NumberSeq ) (lambda n (call @argmin (var n))) (anchored 1))
(rule $Cond (largest $NumberSeq ) (lambda n (call @argmax (var n))) (anchored 1))
(rule $Cond (shift [ $CondSeq , $NumberSeq , $NumberSeq ] )
(lambda c (lambda n1 (lambda n2
(call @shift (var c) (var n1) (var n2))))) (anchored 1))
(rule $Cond (shift [ $NumberSeq , $NumberSeq ] )
(lambda n1 (lambda n2
(call @shift (var n1) (var n2)))) (anchored 1))
(rule $Cond ( leftof $CondSeq )
(lambda c (call @shift (var c) (call @constant (number 0)) (call @constant (number 1)))) (anchored 1))
(rule $Cond ( rightof $CondSeq )
(lambda c (call @shift (var c) (call @constant (number 0)) (call @constant (number -1)))) (anchored 1))
(rule $Cond ( frontof $CondSeq )
(lambda c (call @shift (var c) (call @constant (number -1)) (call @constant (number 0)))) (anchored 1))
(rule $Cond ( backof $CondSeq )
(lambda c (call @shift (var c) (call @constant (number 1)) (call @constant (number 0 )))) (anchored 1))
(rule $Cond ( left )
(ConstantFn (call @shift (call @constant (number 0)) (call @constant (number 1)))) (anchored 1))
(rule $Cond ( right )
(ConstantFn (call @shift (call @constant (number 0)) (call @constant (number -1)))) (anchored 1))
(rule $Cond ( front )
(ConstantFn (call @shift (call @constant (number -1)) (call @constant (number 0)))) (anchored 1))
(rule $Cond ( back )
(ConstantFn (call @shift (call @constant (number 1)) (call @constant (number 0 )))) (anchored 1))
(rule $Color (red) (ConstantFn (number 0 COLOR)) (anchored 1))
(rule $Color (orange) (ConstantFn (number 1 COLOR)) (anchored 1))
(rule $Color (yellow) (ConstantFn (number 2 COLOR)) (anchored 1))
(rule $Color (green) (ConstantFn (number 3 COLOR)) (anchored 1))
(rule $Color (blue) (ConstantFn (number 4 COLOR)) (anchored 1))
(rule $Color (purple) (ConstantFn (number 5 COLOR)) (anchored 1))
(rule $Color (brown) (ConstantFn (number 6 COLOR)) (anchored 1))
(rule $Color (cyan) (ConstantFn (number 7 COLOR)) (anchored 1))
(rule $Color (trans) (ConstantFn (number 9 COLOR)) (anchored 1))
(rule $Color (glass) (ConstantFn (number 9 COLOR)) (anchored 1))
(rule $Color (mark) (ConstantFn (number 10 COLOR)) (anchored 1))
# keywords used for annotations
(rule $Keyword (add) (ConstantFn (string keyword)))
(rule $Keyword (remove) (ConstantFn (string keyword)))
(rule $Keyword (then) (ConstantFn (string keyword)))
(rule $Keyword (if) (ConstantFn (string keyword)))
(rule $Keyword (repeat) (ConstantFn (string keyword)))
(rule $Keyword (time) (ConstantFn (string keyword)))
(rule $Keyword (times) (ConstantFn (string keyword)))
(rule $Keyword (col) (ConstantFn (string keyword)))
(rule $Keyword (row) (ConstantFn (string keyword)))
(rule $Keyword (height) (ConstantFn (string keyword)))
(rule $Keyword (has) (ConstantFn (string keyword)))
(rule $Keyword (top) (ConstantFn (string keyword)))
(rule $Keyword (leftof) (ConstantFn (string keyword)))
(rule $Keyword (rightof) (ConstantFn (string keyword)))
(rule $Keyword (frontof) (ConstantFn (string keyword)))
(rule $Keyword (backof) (ConstantFn (string keyword)))
(rule $Keyword (of) (ConstantFn (string keyword)))
(rule $Keyword (and) (ConstantFn (string keyword)))
(rule $Keyword (or) (ConstantFn (string keyword)))
(rule $Keyword (+) (ConstantFn (string keyword)))
(rule $Keyword (-) (ConstantFn (string keyword)))
(rule $Keyword (%) (ConstantFn (string keyword)))
(rule $Keyword (=) (ConstantFn (string keyword)))
(rule $Keyword (<) (ConstantFn (string keyword)))
(rule $Keyword (>) (ConstantFn (string keyword)))
(rule $Keyword (!=) (ConstantFn (string keyword)))
(rule $Keyword (largest) (ConstantFn (string keyword)))
(rule $Keyword (smallest) (ConstantFn (string keyword)))
(rule $Keyword (%) (ConstantFn (string keyword)))
(rule $Keyword (inside) (ConstantFn (string keyword)))
(rule $Keyword (mark) (ConstantFn (string keyword)))
(rule $Keyword (unmark) (ConstantFn (string keyword)))
(rule $Keyword (marked) (ConstantFn (string keyword)))
# hard code tutorial rules, so they can always be accepted
(rule $Action ($Action except the border) (lambda $Action0 (call iff (call logic (string and) (call logic (string and) (call logic (string and) (call filter (call get (string row)) (string >) (number 1 count)) (call filter (call get (string col)) (string >) (number 1 count))) (call filter (call get (string row)) (string <) (number 8 count))) (call filter (call get (string col)) (string <) (number 8 count))) (var $Action0))))

View File

@ -30,8 +30,6 @@
(rule $Action (remove) (ConstantFn (: @remove)) (anchored 1))
(rule $Action (remove $Sets) (lambda s (: @remove (var s))) (anchored 1))
# (rule $Action (remove $Sets) (lambda s (:for (var s) (: @remove))) (anchored 1))
############### unary sets
(rule $Set (selected) this (anchored 1))
(rule $Set (previous) prev (anchored 1))

View File

@ -1,160 +0,0 @@
# contextful top level functions
# command:
(def @root context:root)
# basic actions
(def @add add)
(def @remove remove)
(def @move move)
(def @name name)
# action combinators
(def @seq seq)
(def @repeat repeat)
(def @scope scope)
# binary set operations
(def @setop setop)
(def @filter filter)
# get property
(def @get get)
# properties
(def @equals equals)
# numbers on cubes
(def @compare compare)
(def @constant constant)
(def @arith arith)
# higher order functions
(def @argmin argmin)
(def @argmax argmax)
# select
(def @name name)
(def @named named)
# special values
(def @sets sets) # constant sets
(def @setf setf) # set functions
(def @worlds worlds) # set functions
# sugar
(def @selected (call @filter (call @named (string s))))
# typed lambdas
# Action a, CubesSet s, CubePredicate p, CubeNumber n, CubeProperty r, Direction d, Color c $CubeNumberProp q
# This grammar should have Rule.defaultIsFloating false
# (set JavaExecutor.printStackTrace true)
# utilities
(rule $ROOT (_worlds) (ConstantFn (call @worlds (string simple))) (anchored 1))
(rule $ROOT (_contextcmd) (ConstantFn (string "(context (graph NaiveKnowledgeGraph ((string [[1,3,1,\"Green\",[]],[2,2,1,\"Blue\",[]],[1,3,2,\"Red\",[]]]) (name b) (name c))))")) (anchored 1))
####### Start of the actual grammar
(rule $ROOT ($ActionSeq) (lambda a (call @root (var a))) (anchored 1)) # process for better
(rule $Action ({ $ActionSeq }) (lambda a (call @scope (var a))) (anchored 1)) # scope variables inside this
# control flow
(rule $ActionSeq ($ActionSeq ; $Action) (lambda a1 (lambda a2 (call @seq (var a1) (var a2)))) (anchored 1))
(rule $Action (repeat $NumberSeq [ $ActionSeq ] ) (lambda n (lambda a (call @repeat (var n) (var a)))) (anchored 1))
(rule $ActionSeq ($Action) (IdentityFn) (anchored 1))
(rule $Action ([ $ActionSeq ]) (IdentityFn) (anchored 1))
# basic actions
(rule $Action (remove $CubesSeq) (lambda s (call @remove (var s))) (anchored 1))
# implicit selection
# (rule $Action (add $Color $Direction) (lambda c (lambda d (call @add (var c) (var d) (@selected))) (anchored 1)))
# (rule $Action (move $Direction) (lambda d (call @move (var d) (@selected))) (anchored 1))
(rule $Action (add $Color $CubesSeq) (lambda c (lambda s (call @add (var c) (string top) (var s)))) (anchored 1))
(rule $Action (add $Color $Direction $CubesSeq) (lambda c (lambda d (lambda s (call @add (var c) (var d) (var s))))) (anchored 1))
(rule $Action (move $CubesSeq $Direction) (lambda s (lambda d (call @move (var d) (var s)))) (anchored 1))
(rule $Action (select $CubesSeq) (lambda s (call @name (var s) (string s))) (anchored 1))
# names
(for @varname (x y z)
(rule $Action ( let @varname = $CubesSeq ) (lambda cs (call @name (var cs) (string @varname))) (anchored 1))
)
(for @varname (x y z)
(rule $Cubes ( cubes @varname ) (ConstantFn (call @named (call @sets (string all)) (string @varname))) (anchored 1))
)
(rule $Cubes (selected) (ConstantFn (call @named (call @sets (string all)) (string s))) (anchored 1))
########### basic sets
(rule $Cubes (cubes) (ConstantFn (call @sets (string all))) (anchored 1))
(rule $Cubes (all cubes) (ConstantFn (call @sets (string all))) (anchored 1))
########### basic set operations
# just use or and filter, which does and
(for @op (or and sub)
(rule $CubesSeq ($CubesSeq @op $Cubes) (lambda s1 (lambda s2
(call @setop (string @op) (var s1) (var s2)))) (anchored 1))
)
(rule $CubesSeq ($Cubes) (IdentityFn) (anchored 1))
(rule $Cubes ([ $CubesSeq ]) (IdentityFn) (anchored 1))
########### unary cube operations, filtering with a predicate
(rule $Cubes ($CubesSeq where $CubePred) (lambda s (lambda p
(call @filter (var s) (var p)))) (anchored 1))
(rule $Cubes ($CubesSeq where $CubeNumberProp is largest) (lambda s (lambda q (call @argmax (var s) (var q)))) (anchored 1))
(rule $Cubes ($CubesSeq where $CubeNumberProp is smallest) (lambda s (lambda q (call @argmin (var s) (var q)))) (anchored 1))
# generating cube predicates, note there is no logical binaries
(for @rel (> >= = < <= ==)
(rule $CubePred ($NumberSeq @rel $NumberSeq) (lambda n1 (lambda n2
(call @compare (string @rel) (var n1) (var n2)))) (anchored 1))
)
(rule $CubePred ($CubeProp = $CubePropVal) (lambda p (lambda s
(call @equals (var p) (var s)))) (anchored 1))
(for @property (color name)
(rule $CubeProp (@property) (ConstantFn (call @get (string @property))) (anchored 1))
)
(rule $CubePropVal ($Color) (IdentityFn) (anchored 1))
########### arithmetics and etc
(for @num (0 1 2 3 4 5 6 7 8 9)
(rule $Number (@num) (ConstantFn (number @num)) (anchored 1))
)
(rule $Number (many) (ConstantFn (number 10 infty)) (anchored 1))
(for @property (col row height color name)
(rule $Number (@property) (ConstantFn (call @get (string @property))) (anchored 1))
)
(for @op (+ - %)
(rule $NumberSeq ($NumberSeq @op $Number) (lambda n1 (lambda n2
(call @arith (string @op) (var n1) (var n2)))) (anchored 1))
)
(rule $Number ([ $NumberSeq ]) (IdentityFn) (anchored 1))
(rule $NumberSeq ( $Number ) (IdentityFn) (anchored 1))
(for @dir (top bot left right front back)
(rule $Direction (@dir) (ConstantFn (string @dir)) (anchored 1))
)
####### Constants
(rule $Color (red) (ConstantFn (string red)) (anchored 1))
(rule $Color (orange) (ConstantFn (string orange)) (anchored 1))
(rule $Color (yellow) (ConstantFn (string yellow)) (anchored 1))
(rule $Color (green) (ConstantFn (string green)) (anchored 1))
(rule $Color (blue) (ConstantFn (string blue)) (anchored 1))
(rule $Color (purple) (ConstantFn (string purple)) (anchored 1))
(rule $Color (brown) (ConstantFn (string brown)) (anchored 1))
(rule $Color (cyan) (ConstantFn (string cyan)) (anchored 1))
(rule $Color (trans) (ConstantFn (string trans)) (anchored 1))

View File

@ -1 +0,0 @@
../shrdlurn_output/grammar/objects.grammar

View File

@ -1,107 +0,0 @@
# contextful top level functions
(def @rootFn context:root)
(def @iff iff)
# actions
(def @add add)
(def @remove remove)
# action combiners
(def @serial seq)
(def @repeat repeat)
# filters and their combiners
(def @filter filter)
(def @topColor top)
(def @contains has)
(def @not not)
(def @combine logic)
(def @get get)
# This grammar should have Rule.defaultIsFloating false
# TO TEST
# (context (graph NaiveKnowledgeGraph ((string [[1,2,3,4],[4,3,1],[2,2,1],[2,2,3],[3],[]]) (name b) (name c))))
# (set JavaExecutor.printStackTrace true)
####### Start of the actual grammar
(rule $ROOT ($ActionSeq) (lambda a (call @rootFn (var a))) (anchored 1)) # process for better
(rule $Action ($ActionSeq if $CondSeq) (lambda a (lambda c (call @iff (var c) (var a)))) (anchored 1))
# combo actions
(rule $ActionSeq ($ActionSeq then $Action) (lambda a1 (lambda a2 (call @serial (var a1) (var a2)))) (anchored 1))
(rule $Action (repeat $ActionSeq $NUM time) (lambda a (lambda n (call @repeat (var n) (var a)))) (anchored 1))
(rule $Action (repeat $ActionSeq $NUM times) (lambda a (lambda n (call @repeat (var n) (var a)))) (anchored 1))
(rule $ActionSeq ($Action) (IdentityFn) (anchored 1))
(rule $Action ([ $ActionSeq ]) (IdentityFn) (anchored 1))
# combo conditions
(for @op (or and)
(rule $CondSeq ($CondSeq @op $Cond) (lambda c1 (lambda c2
(call @combine (string @op) (var c1) (var c2)))) (anchored 1))
)
(rule $Cond (not $CondSeq) (lambda c (call @not (var c))) (anchored 1))
(rule $CondSeq ($Cond) (IdentityFn) (anchored 1))
(rule $Cond ([ $CondSeq ]) (IdentityFn) (anchored 1))
# relative stuff
# (rule $CondSeq (left $NUM of $CondSeq) (IdentityFn) (anchored 1))
# could remove some of these
(for @rel (> >= = < <= %2= %3= %4=)
(rule $Cond ($Getter @rel $NUM) (lambda g (lambda n
(call @filter (var g) (string @rel) (var n)))) (anchored 1))
)
(rule $Action (remove) (ConstantFn (call @remove)) (anchored 1))
(rule $Action (add $Color) (lambda t (call @add (var t))) (anchored 1))
(for @property (col row height)
(rule $Getter (@property) (ConstantFn (call @get (string @property))) (anchored 1))
)
# basic conditions
(rule $Cond (has $Color) (lambda t
(call @contains (var t))) (anchored 1))
(rule $Cond (ha $Color) (lambda t
(call @contains (var t))) (anchored 1))
(rule $Cond (top $Color) (lambda t
(call @topColor (var t))) (anchored 1))
(for @num (0 1 2 3 4 5 6 7 8 9 10)
(rule $NUM (@num) (ConstantFn (number @num count)) (anchored 1))
)
(rule $NUM (many) (ConstantFn (number 10 infinity)) (anchored 1))
(rule $Color (cyan) (ConstantFn (number 0 COLOR)) (anchored 1))
(rule $Color (brown) (ConstantFn (number 1 COLOR)) (anchored 1))
(rule $Color (red) (ConstantFn (number 2 COLOR)) (anchored 1))
(rule $Color (orange) (ConstantFn (number 3 COLOR)) (anchored 1))
(rule $Color (yellow) (ConstantFn (number 4 COLOR)) (anchored 1))
# hard code tutorial rules, so they can always be accepted
(rule $Action ($Action except the border) (cubeworld.ApplyFn (lambda $Action0 (call iff (call logic (string and) (call logic (string and) (call logic (string and) (call filter (call get (string row)) (string >) (number 1 count)) (call filter (call get (string col)) (string >) (number 1 count))) (call filter (call get (string row)) (string <) (number 8 count))) (call filter (call get (string col)) (string <) (number 8 count))) (var $Action0)))) (anchored 1))
(rule $Action (add $NUM $Color if $CondSeq) (cubeworld.ApplyFn (lambda $NUM0 (lambda $Color1 (lambda $CondSeq2 (call iff (var $CondSeq2) (call repeat (var $NUM0) (call add (var $Color1)))))))) (anchored 1))
# keywords used for annotations
(rule $Keyword (add) (ConstantFn (string keyword)))
(rule $Keyword (remove) (ConstantFn (string keyword)))
(rule $Keyword (then) (ConstantFn (string keyword)))
(rule $Keyword (if) (ConstantFn (string keyword)))
(rule $Keyword (repeat) (ConstantFn (string keyword)))
(rule $Keyword (time) (ConstantFn (string keyword)))
(rule $Keyword (times) (ConstantFn (string keyword)))
(rule $Keyword (col) (ConstantFn (string keyword)))
(rule $Keyword (row) (ConstantFn (string keyword)))
(rule $Keyword (height) (ConstantFn (string keyword)))
(rule $Keyword (has) (ConstantFn (string keyword)))
(rule $Keyword (top) (ConstantFn (string keyword)))
(rule $Keyword (left) (ConstantFn (string keyword)))
(rule $Keyword (right) (ConstantFn (string keyword)))
(rule $Keyword (front) (ConstantFn (string keyword)))
(rule $Keyword (behind) (ConstantFn (string keyword)))
(rule $Keyword (of) (ConstantFn (string keyword)))
(rule $Keyword (and) (ConstantFn (string keyword)))
(rule $Keyword (or) (ConstantFn (string keyword)))

View File

@ -1,28 +0,0 @@
#!/bin/sh
SEMPATH=.
GRAMMAR=./shrdlurn/stacks.grammar
mkdir ./shrdlurn/logs
mkdir ./shrdlurn/examples
cd $SEMPATH
LEARNOPTS="-Parser FloatingParser -FloatingParser.maxDepth 8 -FloatingParser.useSizeInsteadOfDepth true -Params.l1Reg lazy -Params.l1RegCoeff 0.001 -Parser.beamSize 100 -StacksWorldFeatureComputer.ngramN 2 -Params.initStepSize 0.1 -Params.adaptiveStepSize true -FeatureExtractor.featureDomains tree"
SESSIONSTUFF="-Master.onlineLearnExamples false -Master.independentSessions true"
PRAG="-Master.bePragmatic true -PragmaticListener.addModelProb true -PragmaticListener.smoothAlpha 1.0 -PragmaticListener.uniformWeight 0.001 -PragmaticListener.lambda 3.0 -Learner.onlineEvaluation true -Derivation.comparePragmatically true"
OPTIONS="-Dmodules=core,cubeworld -cp libsempre/*:lib/* -ea edu.stanford.nlp.sempre.Main -execDir _OUTPATH_/runFloat -overwriteExecDir -addToView 0 -Main.interactive -JavaExecutor.convertNumberValues false -FeatureExtractor.featureComputers cubeworld.StacksWorldFeatureComputer -Params.initWeightsRandomly false -Grammar.inPaths $GRAMMAR -Parser.pruneErrorValues true -JoinFn.typeInference true -LanguageAnalyzer.lowerCaseTokens true"
# features are tree, heads, ngram
DEBUG="-Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n,address=8898"
if [ "$HOSTNAME" = "jonsson.stanford.edu" ]; then
echo "running on jonsson"
TRAIN_OUTS_SERVER="-Master.newExamplesPath /afs/cs.stanford.edu/u/sidaw/git/examples/ -Master.logPath /afs/cs.stanford.edu/u/sidaw/git/logs/ -server true"
echo rlwrap java $OPTIONS $LEARNOPTS $SESSIONSTUFF $TRAIN_OUTS_SERVER -Server.numThreads 16 "$@"
rlwrap java $OPTIONS $LEARNOPTS $SESSIONSTUFF $TRAIN_OUTS_SERVER -Server.numThreads 16 "$@"
else
echo "not running on jonsson"
TRAIN_OUTS_LOCAL="-Master.newExamplesPath ./shrdlurn/examples/ -Master.logPath ./shrdlurn/logs/ -server true"
rlwrap java $OPTIONS $LEARNOPTS $TRAIN_OUTS_LOCAL $SESSIONSTUFF $PRAG -Server.numThreads 1 "$@"
fi

View File

@ -1,36 +0,0 @@
#!/bin/sh
# SEMPATH=../semparse
GRAMMAR=./shrdlurn/evenricher.grammar
EXAMPLEPATH=~/shrdlurn/examples/
NEWGRAMMARPATH=~/shrdlurn/grammar/
LOGPATH=~/shrdlurn/logs/
# cd $SEMPATH
PARSEROPTS='-Parser.pruneErrorValues true -Parser BeamParser -Parser.trackedCats $Color $Number $NumberSeq $Cond $CondSeq $Action $ActionSeq -FloatingParser.defaultIsFloating true'
# -FloatingParser.maxDepth 12 -FloatingParser.useSizeInsteadOfDepth true -FloatingParser.defaultIsFloating true -FloatingParser.useAnchorsOnce true"
LEARNOPTS="-Params.l1Reg lazy -Params.l1RegCoeff 0.001 -Parser.beamSize 50 -Params.initStepSize 0.1 -Params.adaptiveStepSize true -ParserState.customExpectedCounts UNIFORM"
FEATOPTS='-FeatureExtractor.featureComputers interactive.blocks.RicherStacksWorldFeatureComputer -FeatureExtractor.featureDomains rule subtree
-RicherStacksWorldFeatureComputer.ngramN 2 -RicherStacksWorldFeatureComputer.parameterizeCats $Number $Color'
OPTIONS="-Dmodules=core,interactive -cp libsempre/*:lib/* -ea edu.stanford.nlp.sempre.Main
-execDir _OUTPATH_/runRichmoreparams -overwriteExecDir -addToView 0
-Main.interactive
-JavaExecutor.convertNumberValues false
-JavaExecutor.classPathPrefix edu.stanford.nlp.sempre.interactive.blocks.RicherStacksWorld
-Params.initWeightsRandomly false
-Grammar.inPaths $GRAMMAR
-Grammar.binarizeRules false
-Grammar.useApplyFn interactive.ApplyFn
-LanguageAnalyzer.lowerCaseTokens true -LanguageAnalyzer.useLemmaTokens false"
# features are tree, heads, ngram
DEBUG="-Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n,address=8898"
TRAIN_OUTS_LOCAL="-Master.newExamplesPath $EXAMPLEPATH -Master.logPath $LOGPATH -Master.newGrammarPath $NEWGRAMMARPATH"
INDEP_SESSIONS="-Master.onlineLearnExamples false -Master.independentSessions true"
SESSIONS="-Master.onlineLearnExamples true -Master.independentSessions false"
TRAIN_IN="-Dataset.inPaths def:./shrdlurn/sidaw.lisp -Learner.maxTrainIters 1"
echo "not running on jonsson"
rlwrap java $OPTIONS $PARSEROPTS $LEARNOPTS $FEATOPTS $SESSIONS $TRAIN_OUTS_LOCAL $TRAIN_IN -server true -Server.numThreads 8 $@

View File

@ -1,7 +0,0 @@
(example
(id session:sidaw)
(timeStamp 2016-05-10T11:09:58.605)
(NBestInd 5)
(utterance "give me new world")
(definition "_worlds")
)

View File

@ -1,72 +0,0 @@
# actions, all contexful
(def @removeAll context:edu.stanford.nlp.sempre.cubeworld.StacksWorld.removeAll)
(def @removeTop context:edu.stanford.nlp.sempre.cubeworld.StacksWorld.removeTop)
(def @stackOnTop context:edu.stanford.nlp.sempre.cubeworld.StacksWorld.stackOnTop)
(def @doubleTop context:edu.stanford.nlp.sempre.cubeworld.StacksWorld.doubleTop)
# uncontextful binary set ops
(def @setUnion edu.stanford.nlp.sempre.cubeworld.StacksWorld.setUnion)
(def @setIntersection edu.stanford.nlp.sempre.cubeworld.StacksWorld.setIntersection)
(def @setDifference edu.stanford.nlp.sempre.cubeworld.StacksWorld.setDifference)
# uncontextful unary set ops
(def @leftMost1 edu.stanford.nlp.sempre.cubeworld.StacksWorld.leftMost1)
(def @rightMost1 edu.stanford.nlp.sempre.cubeworld.StacksWorld.rightMost1)
(def @leftMost edu.stanford.nlp.sempre.cubeworld.StacksWorld.leftMost)
(def @rightMost edu.stanford.nlp.sempre.cubeworld.StacksWorld.rightMost)
(def @complement edu.stanford.nlp.sempre.cubeworld.StacksWorld.complement)
# contextful first level primitives
(def @getColor context:edu.stanford.nlp.sempre.cubeworld.StacksWorld.getColor)
(def @getTopColor context:edu.stanford.nlp.sempre.cubeworld.StacksWorld.getTopColor)
(def @getAll context:edu.stanford.nlp.sempre.cubeworld.StacksWorld.getAll)
(def @getNonEmpty context:edu.stanford.nlp.sempre.cubeworld.StacksWorld.getNonEmpty)
(def @getGEQ context:edu.stanford.nlp.sempre.cubeworld.StacksWorld.getGEQ)
# final ops
(def @wallToString edu.stanford.nlp.sempre.cubeworld.StacksWorld.wallToString)
####### Start of the actual grammar
# generates (NumColors+1) * (NumSets) = 125, 180
# NumSets = (NumColors+1)*(1+2+2) = 25, 30
(rule $ROOT ($Action) (lambda a (call @wallToString (var a)) )) # excecute some action
(rule $Action ( $Set3 ) (lambda s (call @removeTop (var s) )))
(rule $Action ( $Set3 $Color )
(lambda s (lambda c (call @stackOnTop (var s) (var c)))))
(rule $Set3 ($Set2) (IdentityFn))
(rule $Set3 ($Set1) (IdentityFn))
(rule $Set3 ($Set) (IdentityFn))
(for @x (0 1 2 3)
(rule $Color (tok) (ConstantFn (number @x COLOR)))
)
(for @x (1)
(rule $Count (tok) (ConstantFn (number @x COUNT)))
)
# (rule $Set (tok) (ConstantFn (call @getAll)))
(rule $Set (tok) (ConstantFn (call @getNonEmpty)))
# (rule $Set ($Color) (lambda c (call @getColor (var c) )))
(rule $Set ($Color) (lambda c (call @getTopColor (var c) )))
(rule $Set1 ($Set) (lambda s (call @leftMost1 (var s) )))
(rule $Set1 ($Set) (lambda s (call @rightMost1 (var s) )))
(rule $Set2 ($Set) (lambda s (call @complement (var s) )))
(rule $Set2 ($Set1) (lambda s (call @complement (var s) )))
#(rule $Set1 ($Set) (lambda s (call @leftMost (var s) (number 1 COUNT))))
#(rule $Set1 ($Set) (lambda s (call @rightMost (var s) (number 1 COUNT))))
#(rule $Set ($Set $Count) (lambda s (lambda n (call @leftMost (var s) (var n) ))))
#(rule $Set ($Set $Count) (lambda s (lambda n (call @rightMost (var s) (var n)))))
#(rule $Set ($Count) (lambda h (call @getGEQ (var h))))
# (rule $Set2 ($Set $Set) (lambda s1 (lambda s2
# (call @setIntersection (var s1) (var s2)))))
# (rule $Set2 ($Set $Set) (lambda s1 (lambda s2
# (call @setUnion (var s1) (var s2)))))
# (rule $Set2 ($Set $Set) (lambda s1 (lambda s2
# (call @setDifference (var s1) (var s2)))))
(when usenumbers
(rule $Count ($TOKEN) (NumberFn) (anchored 1))
)

View File

@ -3,7 +3,7 @@ package edu.stanford.nlp.sempre;
import com.google.common.base.Function;
import com.google.common.collect.Lists;
import edu.stanford.nlp.sempre.interactive.actions.ActionFormula;
import edu.stanford.nlp.sempre.interactive.ActionFormula;
import fig.basic.LispTree;
import java.util.HashSet;

View File

@ -19,12 +19,12 @@ import org.testng.collections.Lists;
import com.google.common.collect.ImmutableList;
import edu.stanford.nlp.sempre.Master.Options;
import edu.stanford.nlp.sempre.interactive.ActionFormula;
import edu.stanford.nlp.sempre.interactive.BlockFn;
import edu.stanford.nlp.sempre.interactive.DefinitionAligner;
import edu.stanford.nlp.sempre.interactive.FlatWorld;
import edu.stanford.nlp.sempre.interactive.DefinitionAligner.Match;
import edu.stanford.nlp.sempre.interactive.GrammarInducer;
import edu.stanford.nlp.sempre.interactive.actions.ActionFormula;
import edu.stanford.nlp.sempre.interactive.actions.FlatWorld;
import fig.basic.IOUtils;
import fig.basic.LispTree;
import fig.basic.LogInfo;
@ -41,10 +41,13 @@ public final class ILUtils {
public String JSONLogPath = "./int-output/json/";
@Option(gloss = "path to store new command logs")
public String newInteractiveCommandLog;
public String commandLog;
@Option(gloss = "read and run these commands on startup")
public String interactiveCommandLog;
public List<String> commandInputs;
@Option(gloss = "use the best formula when no match or not provided")
public boolean useBestFormula = false;
}
public static Options opts = new Options();
private ILUtils() { }
@ -52,9 +55,9 @@ public final class ILUtils {
// dont spam my log when reading things in the beginning...
public static boolean fakeLog = false;
private static Consumer<String> writer(String path) {
if (fakeLog)
if (fakeLog) {
return s -> LogInfo.log(s);
else
} else
return s -> {
PrintWriter out = IOUtils.openOutAppendHard(path);
out.write(s);
@ -114,7 +117,7 @@ public final class ILUtils {
if (!found && !formula.equals("?")) LogInfo.errors("matching formula not found: %s", formula);
// just making testing easier, use top derivation when we formula is not given
if (!found && (formula.equals("?") || formula==null) && ex.predDerivations.size() > 0)
if (!found && ex.predDerivations.size() > 0 && (formula.equals("?") || formula==null || opts.useBestFormula) )
allDerivs.add(stripDerivation(ex.predDerivations.get(0)));
}
return allDerivs;
@ -220,9 +223,8 @@ public final class ILUtils {
} catch (Exception e) {
jsonMap.put("exception", e.toString());
} finally {
String jsonStr = Json.prettyWriteValueAsStringHard(jsonMap) + "\n";
writer(Paths.get(ILUtils.opts.JSONLogPath, sessionId + ".json").toString()).accept(jsonStr);
writer(Paths.get(ILUtils.opts.JSONLogPath, sessionId + ".ex.json").toString()).accept(jsonStr);
}
}
@ -232,10 +234,10 @@ public final class ILUtils {
jsonMap.put("id", sessionId);
jsonMap.put("log", log);
writer(Paths.get(ILUtils.opts.JSONLogPath, sessionId + ".log").toString())
writer(Paths.get(ILUtils.opts.JSONLogPath, sessionId + ".log.json").toString())
.accept(Json.writeValueAsStringHard(jsonMap) + "\n");
writer(Paths.get(ILUtils.opts.newInteractiveCommandLog).toString())
writer(Paths.get(ILUtils.opts.commandLog).toString())
.accept(Json.writeValueAsStringHard(jsonMap) + "\n");
}

View File

@ -111,19 +111,32 @@ public class Master {
this.learner = new Learner(builder.parser, builder.params, new Dataset());
// run all interactive commands logged
if (!Strings.isNullOrEmpty(ILUtils.opts.interactiveCommandLog)) {
for (String fileName : ILUtils.opts.commandInputs) {
ILUtils.fakeLog = true;
Session trainer = getSession("trainer");
try (Stream<String> stream = Files.lines(Paths.get(ILUtils.opts.interactiveCommandLog))) {
stream.forEach(l -> {
Map<String, Object> json = Json.readMapHard(l);
String command = json.get("log").toString();
handleCommand(trainer, command, new Response());
});
boolean useBestFormula = ILUtils.opts.useBestFormula;
ILUtils.opts.useBestFormula = true;
try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
LogInfo.logs("Reading %s", fileName);
if (fileName.endsWith(".json")) {
stream.forEach(l -> {
Map<String, Object> json = Json.readMapHard(l);
String command = json.get("log").toString();
Session trainer = getSession(json.get("id").toString());
handleCommand(trainer, command, new Response());
});
} else if (fileName.endsWith(".lisp")) {
stream.forEach(l -> {
LogInfo.logs("processing %s", l);
Session trainer = getSession("default");
handleCommand(trainer, l, new Response());
});
}
} catch (IOException e) {
e.printStackTrace();
} finally {
ILUtils.fakeLog = false;
ILUtils.opts.useBestFormula = useBestFormula;
}
}
}
@ -565,6 +578,10 @@ public class Master {
}
private void logJSON(String line, Response response, Session session) {
if (response == null || response.ex == null) {
LogInfo.logs("Line %s cannot be used", line);
return;
}
if (response.ex.predDerivations != null && response.ex.predDerivations.size() > 0) {
response.candidateIndex = 0;
response.ex.setTargetFormula(response.ex.predDerivations.get(0).formula);

View File

@ -4,7 +4,7 @@ import fig.basic.*;
import java.util.*;
import edu.stanford.nlp.sempre.interactive.actions.ActionFormula;
import edu.stanford.nlp.sempre.interactive.ActionFormula;
/**
* Performs type inference: given a Formula, return a SemType.

View File

@ -1,22 +1,17 @@
package edu.stanford.nlp.sempre.interactive.actions;
package edu.stanford.nlp.sempre.interactive;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.sql.Types;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.function.Function;
import java.util.stream.Collectors;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.google.common.collect.ObjectArrays;
import com.google.common.collect.Sets;
import edu.stanford.nlp.sempre.*;
import fig.basic.LogInfo;

View File

@ -1,4 +1,4 @@
package edu.stanford.nlp.sempre.interactive.actions;
package edu.stanford.nlp.sempre.interactive;
import static org.testng.AssertJUnit.assertEquals;

View File

@ -1,4 +1,4 @@
package edu.stanford.nlp.sempre.interactive.actions;
package edu.stanford.nlp.sempre.interactive;
import fig.basic.*;
import java.util.*;

View File

@ -1,4 +1,4 @@
package edu.stanford.nlp.sempre.interactive.actions;
package edu.stanford.nlp.sempre.interactive;
import com.google.common.base.Function;
import com.google.common.collect.Lists;

View File

@ -1,4 +1,4 @@
package edu.stanford.nlp.sempre.interactive.actions;
package edu.stanford.nlp.sempre.interactive;
import java.util.Arrays;

View File

@ -1,4 +1,4 @@
package edu.stanford.nlp.sempre.interactive.actions;
package edu.stanford.nlp.sempre.interactive;
import fig.basic.*;
import java.util.*;

View File

@ -1,4 +1,4 @@
package edu.stanford.nlp.sempre.interactive.actions;
package edu.stanford.nlp.sempre.interactive;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

View File

@ -9,7 +9,6 @@ import edu.stanford.nlp.sempre.Example;
import edu.stanford.nlp.sempre.Formula;
import edu.stanford.nlp.sempre.SemanticFn;
import edu.stanford.nlp.sempre.SingleDerivationStream;
import edu.stanford.nlp.sempre.interactive.actions.ActionFormula;
import fig.basic.LispTree;
import fig.basic.Option;

View File

@ -1,4 +1,4 @@
package edu.stanford.nlp.sempre.interactive.actions;
package edu.stanford.nlp.sempre.interactive;
import static org.testng.AssertJUnit.assertEquals;

View File

@ -1,4 +1,4 @@
package edu.stanford.nlp.sempre.interactive.actions;
package edu.stanford.nlp.sempre.interactive;
import java.util.ArrayList;
import java.util.Collection;

View File

@ -1,4 +1,4 @@
package edu.stanford.nlp.sempre.interactive.actions;
package edu.stanford.nlp.sempre.interactive;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;

View File

@ -24,7 +24,6 @@ import edu.stanford.nlp.sempre.LambdaFormula;
import edu.stanford.nlp.sempre.Rule;
import edu.stanford.nlp.sempre.SemanticFn;
import edu.stanford.nlp.sempre.VariableFormula;
import edu.stanford.nlp.sempre.interactive.actions.ActionFormula;
import fig.basic.LispTree;
import fig.basic.LogInfo;
import fig.basic.Option;

View File

@ -1,4 +1,4 @@
package edu.stanford.nlp.sempre.interactive.actions;
package edu.stanford.nlp.sempre.interactive;
import static org.testng.AssertJUnit.assertEquals;

View File

@ -1,4 +1,4 @@
package edu.stanford.nlp.sempre.interactive.actions;
package edu.stanford.nlp.sempre.interactive;
import java.util.Set;