Mercurial > repos > icfp2014
annotate code/dotScanner.lm @ 23:5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 25 Jul 2014 22:37:53 -0700 |
parents | 1c6d4f2642d0 |
children | ec0b74f4f2d9 |
rev | line source |
---|---|
12
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
1 #{ |
23
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
2 length <- :lst { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
3 len <- [] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
4 while: { not: (lst isInteger?)} do: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
5 lst <- lst tail |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
6 len <- len + 1 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
7 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
8 len |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
9 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
10 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
11 reverse <- :lst { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
12 new <- [] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
13 while: { not: (lst isInteger?)} do: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
14 new <- (lst value) | new |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
15 lst <- lst tail |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
16 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
17 new |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
18 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
19 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
20 split:at <- :lst :pos { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
21 first <- [] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
22 i <- 0 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
23 while: { i < pos } do: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
24 first <- (lst value) | first |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
25 lst <- lst tail |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
26 i <- i + 1 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
27 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
28 #[(reverse: first) lst] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
29 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
30 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
31 map <- :lst fun { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
32 new <- [] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
33 while: { not: (lst isInteger?) } do: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
34 new <- (fun: (lst value)) | new |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
35 lst <- lst tail |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
36 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
37 reverse: new |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
38 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
39 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
40 fold:with <- :lst acc :fun { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
41 while: { not: (lst isInteger?) } do: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
42 acc <- fun: acc (lst value) |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
43 lst <- lst tail |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
44 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
45 acc |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
46 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
47 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
48 filter <- :lst pred { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
49 new <- [] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
50 while: { not: (lst isInteger?) } do: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
51 if: (pred: (lst value)) { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
52 new <- (lst value) | new |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
53 } else: {} |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
54 lst <- lst tail |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
55 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
56 reverse: new |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
57 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
58 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
59 makeTree:size <- :lst :size { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
60 ret <- 0 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
61 sub <- 0 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
62 half <- size / 2 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
63 if: size = 2 { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
64 ret <- #[(lst value) ((lst tail) value)] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
65 } else: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
66 if: size = 1 { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
67 ret <- lst |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
68 } else: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
69 sub <- split: lst at: half |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
70 ret <- #[ |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
71 (makeTree: (sub value) size: half) |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
72 (makeTree: (sub tail) size: size-half) |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
73 ] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
74 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
75 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
76 ret |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
77 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
78 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
79 makeTree <- :lst { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
80 size <- lst length |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
81 #[size (makeTree: lst size: size)] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
82 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
83 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
84 get:fromTree:size <- :idx :tree :size { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
85 print: #[1 tree size] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
86 ret <- 0 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
87 half <- size / 2 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
88 if: size <= 2 { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
89 if: idx = 0 { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
90 ret <- tree value |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
91 } else: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
92 ret <- tree tail |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
93 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
94 } else: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
95 if: idx < half { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
96 ret <- get: idx fromTree: (tree value) size: half |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
97 } else: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
98 ret <- get: idx-half fromTree: (tree tail) size: size-half |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
99 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
100 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
101 ret |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
102 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
103 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
104 get:fromTree <- :idx :tree { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
105 size <- tree value |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
106 print: #[0 size] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
107 get: idx fromTree: (tree tail) size: size |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
108 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
109 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
110 treeMap:size <- :tree fun :size { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
111 ret <- 0 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
112 half <- size / 2 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
113 if: size = 2 { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
114 ret <- #[(fun: (tree value)) (fun: (tree tail))] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
115 } else: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
116 if: size = 1 { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
117 ret <- #[(fun: (tree value)) 0] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
118 } else: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
119 ret <- #[ |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
120 (treeMap: (tree value) fun size: half) |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
121 (treeMap: (tree tail) fun size: size-half) |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
122 ] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
123 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
124 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
125 ret |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
126 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
127 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
128 treeMap <- :tree fun { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
129 #[(tree value) (treeMap: (tree tail) fun size: (tree value))] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
130 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
131 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
132 tree:size:update:with <- :tree :size :idx :fun { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
133 ret <- 0 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
134 half <- size / 2 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
135 if: size = 2 { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
136 if: idx = 0 { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
137 ret <- #[(fun: (tree value)) (tree tail)] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
138 } else: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
139 ret <- #[(tree value) (fun: (tree tail))] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
140 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
141 } else: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
142 if: size = 1 { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
143 ret <- #[(fun: (tree value)) 0] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
144 } else: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
145 if: (idx < half) { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
146 ret <- #[ |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
147 (tree: (tree value) size: half update: idx with: fun) |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
148 (tree tail) |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
149 ] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
150 } else: { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
151 ret <- #[ |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
152 (tree value) |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
153 (tree: (tree tail) size: size-half update: idx-half with: fun) |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
154 ] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
155 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
156 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
157 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
158 ret |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
159 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
160 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
161 tree:update:with <- :tree :idx :fun { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
162 #[(tree value) (tree: (tree tail) size: (tree value) update: idx with: fun)] |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
163 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
164 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
165 tree:set:to <- :tree :idx :val { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
166 tree: tree update: idx with: :el { val } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
167 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
168 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
169 grid:update:with <- :grid :pos :fun { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
170 x <- pos value |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
171 y <- pos tail |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
172 tree: grid update: y with: :row { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
173 tree: row update: x with: fun |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
174 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
175 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
176 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
177 grid:set:to <- :grid :pos :val { |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
178 grid: grid update: pox with: :el { val } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
179 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
180 |
12
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
181 /* |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
182 ListGet <- :cell idx { |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
183 if: idx = 0 {cell value} else: { |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
184 ListGet: (cell tail) (idx - 1) |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
185 } |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
186 } |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
187 TupGet <- :cell depth size { |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
188 if: idx = 0 {cell value} else: { |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
189 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
|
190 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
|
191 }} |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
192 } |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
193 |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
194 // rowmajor lists |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
195 GridGet <- :x y w h{ |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
196 ListGet |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
197 ... |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
198 } |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
199 */ |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
200 //scanFor <- :target depth visited{ |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
201 //} |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
202 counterLoad <- 4 |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
203 step <- :myState world { |
23
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
204 grid <- makeTree: (map: (world value) :row { makeTree: row }) |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
205 lmState <- (world value) tail |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
206 myLoc <- (lmState tail) value |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
207 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
208 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
209 visited <- treeMap: grid :el { 0 } |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
210 visited <- tree: visited set: myLoc to: 1 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
211 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
212 |
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
213 |
12
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
214 //myPos <- |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
215 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
|
216 move <- myState value |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
217 counter <- (myState tail) - 1 |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
218 if: counter = 0 { |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
219 move <- move + 1 |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
220 counter <- counterLoad |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
221 if: move = 4 { |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
222 move <- 0 |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
223 } else: {} |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
224 } else: {} |
23
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
225 #[0 ((path tail) value)] |
12
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
226 } |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
227 |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
228 main <- :initWorld mystery { |
23
5ded24518dc5
Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
229 #[0 step] |
12
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
230 } |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
231 } |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
232 |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
233 //does not work: |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
234 //someListOrTup get: 0 |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
235 //lambdaman program (step function) faulted TagMismatch |
1c6d4f2642d0
Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff
changeset
|
236 |