Mercurial > repos > icfp2012
comparison src/sim.tp @ 36:814e3d482ad3
Make navigable a property of the cell type so I can use it in lifter
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 15 Jul 2012 11:07:11 -0700 |
parents | 8e8903cc0997 |
children | 9bccdb3ac979 f38437d22ebd |
comparison
equal
deleted
inserted
replaced
35:8e8903cc0997 | 36:814e3d482ad3 |
---|---|
16 } | 16 } |
17 | 17 |
18 makeCellTypes <- { | 18 makeCellTypes <- { |
19 typedict <- dict linear | 19 typedict <- dict linear |
20 new <- :idStr { | 20 new <- :idStr { |
21 cannav <- if: idStr = " " {true} else: { | |
22 if: idStr = "." {true} else: { | |
23 if: idStr = "\\" {true} else: { | |
24 if: idStr = "O" {true} else: { | |
25 false }}}} | |
21 ret <- #{ | 26 ret <- #{ |
22 id <- (idStr byte: 0) | 27 id <- (idStr byte: 0) |
23 string <- idStr | 28 string <- idStr |
24 isrobot <- { false } | 29 isrobot <- { false } |
25 eq <- :other { id = (other id) } | 30 eq <- :other { id = (other id) } |
31 navigable <- { cannav } | |
26 } | 32 } |
27 typedict set: (ret id) ret | 33 typedict set: (ret id) ret |
28 ret | 34 ret |
29 } | 35 } |
30 #{ | 36 #{ |
67 mine setCell: xPrime yPrime self | 73 mine setCell: xPrime yPrime self |
68 mine setCell: x y empty | 74 mine setCell: x y empty |
69 x <- xPrime | 75 x <- xPrime |
70 y <- yPrime | 76 y <- yPrime |
71 } | 77 } |
72 | |
73 navigable <- :cur { | |
74 // need "any" and "all" functions... | |
75 if: (cur eq: empty) {true} else: { | |
76 if: (cur eq: earth) {true} else: { | |
77 if: (cur eq: lambda) {true} else: { | |
78 if: (cur eq: openLift) {true} else: { | |
79 false }}}} | |
80 } | |
81 | 78 |
82 consequenceOf <- :cur { | 79 consequenceOf <- :cur { |
83 if: (cur eq: lambda) {collected <- collected + 1} | 80 if: (cur eq: lambda) {collected <- collected + 1} |
84 if: (cur eq: openLift) {mine succeeded!: true} | 81 if: (cur eq: openLift) {mine succeeded!: true} |
85 } | 82 } |