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: "#"