\ ************ define the rule tables ******************** 0 0 == center 1 1 == center' 0 1 == centers 2 2 == north 3 3 == north' 2 3 == norths 4 4 == south 5 5 == south' 4 5 == souths 6 6 == east 7 7 == east' 6 7 == easts 8 8 == west 9 9 == west' 8 9 == wests 10 10 == n.east 11 11 == n.west 12 12 == s.east 13 13 == s.west create-lut update-table create-lut reverse-table create-lut propagate-table : propagate update centers dup -> norths dup -> souths dup -> easts -> wests center dup -> n.east dup -> n.west dup -> s.east -> s.west ; ?rule>table propagate propagate-table \ ******************* define the steps ********************* define-step init-update full-space lut-src site site-src lut display 0 fix lut-data update-table switch-luts end-step this is when-starting : kick0 kick norths field 0 x 1 y souths field 0 x -1 y easts field -1 x 0 y wests field 1 x 0 y n.east field -1 x 1 y n.west field 1 x 1 y s.east field -1 x -1 y s.west field 1 x -1 y ; : unkick0 kick norths field 0 x -1 y souths field 0 x 1 y easts field 1 x 0 y wests field -1 x 0 y n.east field 1 x -1 y n.west field -1 x -1 y s.east field 1 x 1 y s.west field -1 x 1 y ; define-step free-step kick0 run free end-step this is update-step define-step reverse-step lut-data reverse-table switch-luts lut-src site site-src lut kick run free switch-luts end-step define-step propagate-step lut-data propagate-table switch-luts lut-src site site-src lut display 0 fix kick run free switch-luts end-step define-step preview-kick site-src site kick0 run free end-step define-step restore-kick site-src site unkick0 run free site-src lut end-step \ ******************* run the experiment ******************** RUN-KEYS key-bindings : Reverse -step-count reverse-step xvds ; press BackSp "Switch directions & negate step-count." 0 value show-kick-mode : show-next-kick ['] preview-kick is before-display ['] restore-kick is after-display ; : show-without-kick ['] noop is before-display ['] noop is after-display ; : Toggle-kick-display show-kick-mode 1 xor dup is show-kick-mode dup {{ show-without-kick show-next-kick }} .on/off ; press k "Preview state after next kick." : std-map 0 >color centers 1 = if bright >green then centers 2 = if bright >blue then centers 3 = if bright >red then ; colormap std-map EXPERIMENT-KEYS key-bindings