Mercurial > repos > icfp2012
changeset 31:f7a1daaec925
Use dictionary
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 14 Jul 2012 21:27:36 -0700 |
parents | 031d46ff76a9 |
children | 0a55ee387d69 |
files | src/lifter.tp src/sim.tp |
diffstat | 2 files changed, 11 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lifter.tp Sat Jul 14 20:34:40 2012 -0700 +++ b/src/lifter.tp Sat Jul 14 21:27:36 2012 -0700 @@ -1,4 +1,12 @@ #{ + abs <- :val { + if: val < 0 { 0 - val } else: { val } + } + + distanceFrom:to <- :sx sy :dx dy { + (abs: sx - dx) + (abs: sy - dy) + } + main <- { text <- sim readFd: 0 playfield <- (sim state) fromStr: text
--- a/src/sim.tp Sat Jul 14 20:34:40 2012 -0700 +++ b/src/sim.tp Sat Jul 14 21:27:36 2012 -0700 @@ -14,34 +14,20 @@ } makeCellTypes <- { - allid <- #[] - allobj <- #[] + typedict <- dict linear new <- :idStr { ret <- #{ id <- (idStr byte: 0) str <- idStr isrobot <- { false } } - allobj append: ret - allid append: (ret id) + typedict set: (ret id) ret ret } #{ find <- :id { if: id = ("R" byte: 0) { robot: } else: { - index <- 0 - while: { - if: index < (allid length) { - (allid get: index) != id - } - } do: { - index <- index + 1 - } - if: index < (allid length) { - allobj get: index - } else: { - empty - } + typedict get: id withDefault: empty } } wall <- new: "#"