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