Mercurial > repos > icfp2014
comparison code/dotScanner.lm @ 12:1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
author | William Morgan <billjunk@mrgn.org> |
---|---|
date | Fri, 25 Jul 2014 19:19:07 -0700 |
parents | |
children | 5ded24518dc5 37158acf31e5 |
comparison
equal
deleted
inserted
replaced
11:2a74559e07f5 | 12:1c6d4f2642d0 |
---|---|
1 #{ | |
2 /* | |
3 ListGet <- :cell idx { | |
4 if: idx = 0 {cell value} else: { | |
5 ListGet: (cell tail) (idx - 1) | |
6 } | |
7 } | |
8 TupGet <- :cell depth size { | |
9 if: idx = 0 {cell value} else: { | |
10 if: size = 1 {cell tail} else: { // warning, out-of-bounds idx will return a value! | |
11 TupGet: (cell tail) (idx - 1) (size - 1) | |
12 }} | |
13 } | |
14 | |
15 // rowmajor lists | |
16 GridGet <- :x y w h{ | |
17 ListGet | |
18 ... | |
19 } | |
20 */ | |
21 //scanFor <- :target depth visited{ | |
22 //} | |
23 counterLoad <- 4 | |
24 step <- :myState world { | |
25 print: (world value) | |
26 //myPos <- | |
27 path <- [3 1 3 1] //scanFor: 2 3 [myPos] | |
28 move <- myState value | |
29 counter <- (myState tail) - 1 | |
30 if: counter = 0 { | |
31 move <- move + 1 | |
32 counter <- counterLoad | |
33 if: move = 4 { | |
34 move <- 0 | |
35 } else: {} | |
36 } else: {} | |
37 #[#[move counter] ((path tail) value)] | |
38 } | |
39 | |
40 main <- :initWorld mystery { | |
41 #[#[0 counterLoad] step] | |
42 } | |
43 } | |
44 | |
45 //does not work: | |
46 //someListOrTup get: 0 | |
47 //lambdaman program (step function) faulted TagMismatch | |
48 |