# HG changeset patch # User Mike Pavone # Date 1342326456 25200 # Node ID f7a1daaec925497fa70eb98dd58a2a6aa6fb79da # Parent 031d46ff76a9564eb61b7214d7dea07675c2874b Use dictionary diff -r 031d46ff76a9 -r f7a1daaec925 src/lifter.tp --- 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 diff -r 031d46ff76a9 -r f7a1daaec925 src/sim.tp --- 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: "#"