maze-array-polyfill.nv
· 9.3 KiB · Text
Raw
Playground
= |@math| $last |@math| $op $value * =
|@math| $op $value $last
= |@math| $last |@math| $op * $value =
|@math| $op $last $value
= |@ array| flush cells? |cells array direction| forwards? |forwards cells| $value =
|backwards cells| $value
= |@ array| flush cells? |cells array direction| forwards? |forwards cells| =
|backwards cells|
= |@ array| flush cells |cells array direction| forwards =
|cells array direction| backwards
= |@ array| flush cells? |cells array direction| backwards? |backwards cells| $value =
|forwards cells| $value
= |@ array| flush cells? |cells array direction| backwards? |backwards cells| =
|forwards cells|
= |@ array| flush cells |cells array direction| backwards =
|cells array direction| forwards
= |@ array| set cells index $value |@math| 0 |cells array direction| forwards? |forwards cells| $_ =
|backwards cells| $value |@ array| flush cells
= |@ array| set cells index $value? |@math| $iter |cells array direction| forwards? |forwards cells| $_ =
|backwards cells| $_ |@math| subtract $iter 1
= |@ array| set cells index $value |@math| 0 |cells array direction| forwards? |forwards cells| =
|backwards cells| $value |@ array| flush cells
= |@ array| set cells index $value? |@math| $iter |cells array direction| forwards? |forwards cells| =
|backwards cells| |@math| subtract $iter 1
= |@ array| set cells index $value |@math| 0 |cells array direction| backwards? |backwards cells| $_ =
|forwards cells| $value |@ array| flush cells
= |@ array| set cells index $value? |@math| $iter |cells array direction| backwards? |backwards cells| $_ =
|forwards cells| $_ |@math| subtract $iter 1
= |@ array| set cells index $value |@math| 0 |cells array direction| backwards? |backwards cells| =
|forwards cells| $value |@ array| flush cells
= |@ array| set cells index $value? |@math| $iter |cells array direction| backwards? |backwards cells| =
|forwards cells| |@math| subtract $iter 1
= |@ array| set cells index $value |@math| $iter =
|@ array| flush cells
= |@ array| set cells $index $value |cells array direction| forwards? =
|@ array| set cells index $value
|@math| $index
|@math| protected system call stack
= |@ array| set cells $index $value |cells array direction| backwards? |cells array length| $len? =
|@ array| set cells index $value
|@math| subtract $len $index
|@math| subtract * 1
|@math| protected system call stack
= |@ array| getting cells $index |@math| 0 |cells array direction| forwards? |forwards cells| $value =
|@ array| flush cells |@ array| cells $index $value |backwards cells| $value
= |@ array| getting cells $index |@math| $iter |cells array direction| forwards? |forwards cells| $value =
|@ array| getting cells $index |backwards cells| $value |@math| subtract $iter 1
= |@ array| getting cells $index |@math| 0 |cells array direction| backwards? |backwards cells| $value =
|@ array| flush cells |@ array| cells $index $value |forwards cells| $value
= |@ array| getting cells $index |@math| $iter |cells array direction| backwards? |backwards cells| $value =
|@ array| getting cells $index |forwards cells| $value |@math| subtract $iter 1
= |@ array| getting cells $index |@math| 0 |cells array direction| forwards? |forwards cells| =
|@ array| flush cells |@ array| cells $index |backwards cells|
= |@ array| getting cells $index |@math| $iter |cells array direction| forwards? |forwards cells| =
|@ array| getting cells $index |backwards cells| |@math| subtract $iter 1
= |@ array| getting cells $index |@math| 0 |cells array direction| backwards? |backwards cells| =
|@ array| flush cells |@ array| cells $index |forwards cells|
= |@ array| getting cells $index |@math| $iter |cells array direction| backwards? |backwards cells| =
|@ array| getting cells $index |forwards cells| |@math| subtract $iter 1
= |@ array| getting cells $index |@math| $iter =
|@ array| flush cells
= |@ array| get cells $index |cells array direction| forwards? =
|@ array| getting cells $index
|@math| $index
|@math| protected system call stack
= |@ array| get cells $index |cells array direction| backwards? |cells array length| $len? =
|@ array| getting cells $index
|@math| subtract $len $index
|@math| subtract * 1
|@math| protected system call stack
= |@ array| alloc cells array |@math| 0 =
|forwards cells|
|cells array direction| forwards
= |@ array| alloc cells array |@math| $size =
|forwards cells| |@math| subtract $size 1 |@ array| alloc cells array
= |@ array| create cells $size =
|@math| subtract $size 1 |@ array| alloc cells array
|@math| protected system call stack
|cells array length| $size
= |@math| protected system call stack =
= || set new pen color? |pen color| r $g $b |@math| $r =
|pen color| $r $g $b
= || set new pen color? |pen color| $r g $b |@math| $g =
|pen color| $r $g $b
= || set new pen color? |pen color|$r $g b |@math| $b =
|pen color| $r $g $b
= || set new pen color =
= || next color |pen color| $r $g $b =
|@math| random 50 255 |@math| random 50 255 |@math| random 100 255
|| set new pen color |pen color| r g b
= || jump |backtrack| $row $col =
|matrix position| $row $col
|@math| multiply $col 2 |@math| multiply $row 2
|| jump pen x || jump pen y
|| next color
= || jump |generate| =
= || jump pen x |pen position| $oldx $y |@math| $x =
|pen position| $x $y
= || jump pen y |pen position| $x $oldy |@math| $y =
|pen position| $x $y
= || mark cell at |@math| $index =
|@ array| set cells $index seen
= || mark cell at? |location| $row $col =
|@math| multiply $row 128
|@math| add $col *
= || find neighbors |location| $row $col =
|| get free cell downwards |col| downwards $col |@math| add $row 1
|| get free cell rightwards |row| rightwards $row |@math| add $col 1
|| get free cell upwards |col| upwards $col |@math| add $row -1
|| get free cell leftwards |row| leftwards $row |@math| add $col -1
= || get free cell $dir |col| $dir $col |@math| -1 =
= || get free cell $dir |col| $dir $col |@math| 128 =
= || get free cell $dir |row| $dir $row |@math| -1 =
= || get free cell $dir |row| $dir $row |@math| 128 =
= || get free cell $dir |col| $dir $col |@math| $row =
|@math| multiply $row 128
|@math| add $col *
|| is $dir cell free |location| $row $col
= || get free cell $dir |row| $dir $row |@math| $col =
|@math| multiply $row 128
|@math| add $col *
|| is $dir cell free |location| $row $col
= || is downwards cell free |@ array| cells $index |location| $row $col =
|downwards cell| $row $col
= || is rightwards cell free |@ array| cells $index |location| $row $col =
|rightwards cell| $row $col
= || is upwards cell free |@ array| cells $index |location| $row $col =
|upwards cell| $row $col
= || is leftwards cell free |@ array| cells $index |location| $row $col =
|leftwards cell| $row $col
= || is $dir cell free |@ array| cells $index $value |location| $row $col =
= || is $dir cell free? |@math| $index =
|@ array| get cells $index
= || go in direction |@math| 1 |upwards cell| $row $col =
|matrix position| $row $col
|| mark cell at |location| $row $col
|| move up
|| move up
|| clear navigation state
= || go in direction |@math| 2 |rightwards cell| $row $col =
|matrix position| $row $col
|| mark cell at |location| $row $col
|| move right
|| move right
|| clear navigation state
= || go in direction |@math| 3 |downwards cell| $row $col =
|matrix position| $row $col
|| mark cell at |location| $row $col
|| move down
|| move down
|| clear navigation state
= || go in direction |@math| 4 |leftwards cell| $row $col =
|matrix position| $row $col
|| mark cell at |location| $row $col
|| move left
|| move left
|| clear navigation state
= || go in direction? |@math| 1 |sweep|=
|@math| 2
= || go in direction? |@math| 2 |sweep|=
|@math| 3
= || go in direction? |@math| 3 |sweep|=
|@math| 4
= || go in direction? |@math| 4 |sweep|=
|@math| 1
= || go in direction |@math| $n =
|| clear navigation state || jump
= || clear navigation state |upwards cell| $r $c =
|| push location to backtrack stack
|| clear navigation state
= || clear navigation state |rightwards cell| $r $c =
|| push location to backtrack stack
|| clear navigation state
= || clear navigation state |downwards cell| $r $c =
|| push location to backtrack stack
|| clear navigation state
= || clear navigation state |leftwards cell| $r $c =
|| push location to backtrack stack
|| clear navigation state
= || clear navigation state? |sweep| =
= || clear navigation state? |location| $row $col =
= || clear navigation state =
= || push location to backtrack stack |location| $row $col =
|backtrack| $row $col
= || push location to backtrack stack =
= || pick a random direction |matrix position| $row $col =
|@math| random 1 5
|| find neighbors |location| $row $col
|| go in direction |location| $row $col |sweep| |sweep| |sweep|
= || update |generate|? =
|| pick a random direction
|@graphics| draw-fps
==
|@ array| create cells 16384
|matrix position| 64 64 |screen resolution| 256 256
|pen position| 128 128
|| pen brush pencil
|| pen down
|| pen color 255 64 128
|generate|
| 1 | = |@math| $last |@math| $op $value * = |
| 2 | |@math| $op $value $last |
| 3 | = |@math| $last |@math| $op * $value = |
| 4 | |@math| $op $last $value |
| 5 | |
| 6 | |
| 7 | = |@ array| flush cells? |cells array direction| forwards? |forwards cells| $value = |
| 8 | |backwards cells| $value |
| 9 | |
| 10 | = |@ array| flush cells? |cells array direction| forwards? |forwards cells| = |
| 11 | |backwards cells| |
| 12 | |
| 13 | = |@ array| flush cells |cells array direction| forwards = |
| 14 | |cells array direction| backwards |
| 15 | |
| 16 | = |@ array| flush cells? |cells array direction| backwards? |backwards cells| $value = |
| 17 | |forwards cells| $value |
| 18 | |
| 19 | = |@ array| flush cells? |cells array direction| backwards? |backwards cells| = |
| 20 | |forwards cells| |
| 21 | |
| 22 | = |@ array| flush cells |cells array direction| backwards = |
| 23 | |cells array direction| forwards |
| 24 | |
| 25 | |
| 26 | |
| 27 | = |@ array| set cells index $value |@math| 0 |cells array direction| forwards? |forwards cells| $_ = |
| 28 | |backwards cells| $value |@ array| flush cells |
| 29 | |
| 30 | = |@ array| set cells index $value? |@math| $iter |cells array direction| forwards? |forwards cells| $_ = |
| 31 | |backwards cells| $_ |@math| subtract $iter 1 |
| 32 | |
| 33 | = |@ array| set cells index $value |@math| 0 |cells array direction| forwards? |forwards cells| = |
| 34 | |backwards cells| $value |@ array| flush cells |
| 35 | |
| 36 | = |@ array| set cells index $value? |@math| $iter |cells array direction| forwards? |forwards cells| = |
| 37 | |backwards cells| |@math| subtract $iter 1 |
| 38 | |
| 39 | = |@ array| set cells index $value |@math| 0 |cells array direction| backwards? |backwards cells| $_ = |
| 40 | |forwards cells| $value |@ array| flush cells |
| 41 | |
| 42 | = |@ array| set cells index $value? |@math| $iter |cells array direction| backwards? |backwards cells| $_ = |
| 43 | |forwards cells| $_ |@math| subtract $iter 1 |
| 44 | |
| 45 | = |@ array| set cells index $value |@math| 0 |cells array direction| backwards? |backwards cells| = |
| 46 | |forwards cells| $value |@ array| flush cells |
| 47 | |
| 48 | = |@ array| set cells index $value? |@math| $iter |cells array direction| backwards? |backwards cells| = |
| 49 | |forwards cells| |@math| subtract $iter 1 |
| 50 | |
| 51 | = |@ array| set cells index $value |@math| $iter = |
| 52 | |@ array| flush cells |
| 53 | |
| 54 | = |@ array| set cells $index $value |cells array direction| forwards? = |
| 55 | |@ array| set cells index $value |
| 56 | |@math| $index |
| 57 | |@math| protected system call stack |
| 58 | |
| 59 | = |@ array| set cells $index $value |cells array direction| backwards? |cells array length| $len? = |
| 60 | |@ array| set cells index $value |
| 61 | |@math| subtract $len $index |
| 62 | |@math| subtract * 1 |
| 63 | |@math| protected system call stack |
| 64 | |
| 65 | = |@ array| getting cells $index |@math| 0 |cells array direction| forwards? |forwards cells| $value = |
| 66 | |@ array| flush cells |@ array| cells $index $value |backwards cells| $value |
| 67 | |
| 68 | = |@ array| getting cells $index |@math| $iter |cells array direction| forwards? |forwards cells| $value = |
| 69 | |@ array| getting cells $index |backwards cells| $value |@math| subtract $iter 1 |
| 70 | |
| 71 | = |@ array| getting cells $index |@math| 0 |cells array direction| backwards? |backwards cells| $value = |
| 72 | |@ array| flush cells |@ array| cells $index $value |forwards cells| $value |
| 73 | |
| 74 | = |@ array| getting cells $index |@math| $iter |cells array direction| backwards? |backwards cells| $value = |
| 75 | |@ array| getting cells $index |forwards cells| $value |@math| subtract $iter 1 |
| 76 | |
| 77 | = |@ array| getting cells $index |@math| 0 |cells array direction| forwards? |forwards cells| = |
| 78 | |@ array| flush cells |@ array| cells $index |backwards cells| |
| 79 | |
| 80 | = |@ array| getting cells $index |@math| $iter |cells array direction| forwards? |forwards cells| = |
| 81 | |@ array| getting cells $index |backwards cells| |@math| subtract $iter 1 |
| 82 | |
| 83 | = |@ array| getting cells $index |@math| 0 |cells array direction| backwards? |backwards cells| = |
| 84 | |@ array| flush cells |@ array| cells $index |forwards cells| |
| 85 | |
| 86 | = |@ array| getting cells $index |@math| $iter |cells array direction| backwards? |backwards cells| = |
| 87 | |@ array| getting cells $index |forwards cells| |@math| subtract $iter 1 |
| 88 | |
| 89 | = |@ array| getting cells $index |@math| $iter = |
| 90 | |@ array| flush cells |
| 91 | |
| 92 | = |@ array| get cells $index |cells array direction| forwards? = |
| 93 | |@ array| getting cells $index |
| 94 | |@math| $index |
| 95 | |@math| protected system call stack |
| 96 | |
| 97 | = |@ array| get cells $index |cells array direction| backwards? |cells array length| $len? = |
| 98 | |@ array| getting cells $index |
| 99 | |@math| subtract $len $index |
| 100 | |@math| subtract * 1 |
| 101 | |@math| protected system call stack |
| 102 | |
| 103 | |
| 104 | = |@ array| alloc cells array |@math| 0 = |
| 105 | |forwards cells| |
| 106 | |cells array direction| forwards |
| 107 | |
| 108 | = |@ array| alloc cells array |@math| $size = |
| 109 | |forwards cells| |@math| subtract $size 1 |@ array| alloc cells array |
| 110 | |
| 111 | = |@ array| create cells $size = |
| 112 | |@math| subtract $size 1 |@ array| alloc cells array |
| 113 | |@math| protected system call stack |
| 114 | |cells array length| $size |
| 115 | |
| 116 | |
| 117 | = |@math| protected system call stack = |
| 118 | |
| 119 | = || set new pen color? |pen color| r $g $b |@math| $r = |
| 120 | |pen color| $r $g $b |
| 121 | |
| 122 | = || set new pen color? |pen color| $r g $b |@math| $g = |
| 123 | |pen color| $r $g $b |
| 124 | |
| 125 | = || set new pen color? |pen color|$r $g b |@math| $b = |
| 126 | |pen color| $r $g $b |
| 127 | |
| 128 | = || set new pen color = |
| 129 | |
| 130 | = || next color |pen color| $r $g $b = |
| 131 | |@math| random 50 255 |@math| random 50 255 |@math| random 100 255 |
| 132 | || set new pen color |pen color| r g b |
| 133 | |
| 134 | = || jump |backtrack| $row $col = |
| 135 | |matrix position| $row $col |
| 136 | |@math| multiply $col 2 |@math| multiply $row 2 |
| 137 | || jump pen x || jump pen y |
| 138 | || next color |
| 139 | = || jump |generate| = |
| 140 | |
| 141 | = || jump pen x |pen position| $oldx $y |@math| $x = |
| 142 | |pen position| $x $y |
| 143 | |
| 144 | = || jump pen y |pen position| $x $oldy |@math| $y = |
| 145 | |pen position| $x $y |
| 146 | |
| 147 | = || mark cell at |@math| $index = |
| 148 | |@ array| set cells $index seen |
| 149 | |
| 150 | = || mark cell at? |location| $row $col = |
| 151 | |@math| multiply $row 128 |
| 152 | |@math| add $col * |
| 153 | |
| 154 | = || find neighbors |location| $row $col = |
| 155 | || get free cell downwards |col| downwards $col |@math| add $row 1 |
| 156 | || get free cell rightwards |row| rightwards $row |@math| add $col 1 |
| 157 | || get free cell upwards |col| upwards $col |@math| add $row -1 |
| 158 | || get free cell leftwards |row| leftwards $row |@math| add $col -1 |
| 159 | |
| 160 | = || get free cell $dir |col| $dir $col |@math| -1 = |
| 161 | = || get free cell $dir |col| $dir $col |@math| 128 = |
| 162 | = || get free cell $dir |row| $dir $row |@math| -1 = |
| 163 | = || get free cell $dir |row| $dir $row |@math| 128 = |
| 164 | |
| 165 | = || get free cell $dir |col| $dir $col |@math| $row = |
| 166 | |@math| multiply $row 128 |
| 167 | |@math| add $col * |
| 168 | || is $dir cell free |location| $row $col |
| 169 | |
| 170 | = || get free cell $dir |row| $dir $row |@math| $col = |
| 171 | |@math| multiply $row 128 |
| 172 | |@math| add $col * |
| 173 | || is $dir cell free |location| $row $col |
| 174 | |
| 175 | = || is downwards cell free |@ array| cells $index |location| $row $col = |
| 176 | |downwards cell| $row $col |
| 177 | |
| 178 | = || is rightwards cell free |@ array| cells $index |location| $row $col = |
| 179 | |rightwards cell| $row $col |
| 180 | |
| 181 | = || is upwards cell free |@ array| cells $index |location| $row $col = |
| 182 | |upwards cell| $row $col |
| 183 | |
| 184 | = || is leftwards cell free |@ array| cells $index |location| $row $col = |
| 185 | |leftwards cell| $row $col |
| 186 | |
| 187 | = || is $dir cell free |@ array| cells $index $value |location| $row $col = |
| 188 | |
| 189 | = || is $dir cell free? |@math| $index = |
| 190 | |@ array| get cells $index |
| 191 | |
| 192 | |
| 193 | = || go in direction |@math| 1 |upwards cell| $row $col = |
| 194 | |matrix position| $row $col |
| 195 | || mark cell at |location| $row $col |
| 196 | || move up |
| 197 | || move up |
| 198 | || clear navigation state |
| 199 | |
| 200 | = || go in direction |@math| 2 |rightwards cell| $row $col = |
| 201 | |matrix position| $row $col |
| 202 | || mark cell at |location| $row $col |
| 203 | || move right |
| 204 | || move right |
| 205 | || clear navigation state |
| 206 | |
| 207 | |
| 208 | = || go in direction |@math| 3 |downwards cell| $row $col = |
| 209 | |matrix position| $row $col |
| 210 | || mark cell at |location| $row $col |
| 211 | || move down |
| 212 | || move down |
| 213 | || clear navigation state |
| 214 | |
| 215 | |
| 216 | = || go in direction |@math| 4 |leftwards cell| $row $col = |
| 217 | |matrix position| $row $col |
| 218 | || mark cell at |location| $row $col |
| 219 | || move left |
| 220 | || move left |
| 221 | || clear navigation state |
| 222 | |
| 223 | |
| 224 | = || go in direction? |@math| 1 |sweep|= |
| 225 | |@math| 2 |
| 226 | = || go in direction? |@math| 2 |sweep|= |
| 227 | |@math| 3 |
| 228 | = || go in direction? |@math| 3 |sweep|= |
| 229 | |@math| 4 |
| 230 | = || go in direction? |@math| 4 |sweep|= |
| 231 | |@math| 1 |
| 232 | |
| 233 | = || go in direction |@math| $n = |
| 234 | || clear navigation state || jump |
| 235 | |
| 236 | = || clear navigation state |upwards cell| $r $c = |
| 237 | || push location to backtrack stack |
| 238 | || clear navigation state |
| 239 | |
| 240 | = || clear navigation state |rightwards cell| $r $c = |
| 241 | || push location to backtrack stack |
| 242 | || clear navigation state |
| 243 | |
| 244 | = || clear navigation state |downwards cell| $r $c = |
| 245 | || push location to backtrack stack |
| 246 | || clear navigation state |
| 247 | |
| 248 | = || clear navigation state |leftwards cell| $r $c = |
| 249 | || push location to backtrack stack |
| 250 | || clear navigation state |
| 251 | |
| 252 | = || clear navigation state? |sweep| = |
| 253 | |
| 254 | = || clear navigation state? |location| $row $col = |
| 255 | |
| 256 | = || clear navigation state = |
| 257 | |
| 258 | = || push location to backtrack stack |location| $row $col = |
| 259 | |backtrack| $row $col |
| 260 | |
| 261 | = || push location to backtrack stack = |
| 262 | |
| 263 | = || pick a random direction |matrix position| $row $col = |
| 264 | |@math| random 1 5 |
| 265 | || find neighbors |location| $row $col |
| 266 | || go in direction |location| $row $col |sweep| |sweep| |sweep| |
| 267 | |
| 268 | = || update |generate|? = |
| 269 | || pick a random direction |
| 270 | |@graphics| draw-fps |
| 271 | |
| 272 | == |
| 273 | |@ array| create cells 16384 |
| 274 | |matrix position| 64 64 |screen resolution| 256 256 |
| 275 | |pen position| 128 128 |
| 276 | || pen brush pencil |
| 277 | || pen down |
| 278 | || pen color 255 64 128 |
| 279 | |generate| |