changeset 28:75c97fb80602

Tag team simple AI WIP
author William Morgan <billjunk@mrgn.org>
date Sat, 26 Jul 2014 00:03:41 -0700
parents abd8ceef0dd8
children 5d1ac440b9db
files code/dotScanner.lm
diffstat 1 files changed, 54 insertions(+), 74 deletions(-) [+]
line wrap: on
line diff
--- a/code/dotScanner.lm	Fri Jul 25 23:36:17 2014 -0700
+++ b/code/dotScanner.lm	Sat Jul 26 00:03:41 2014 -0700
@@ -55,6 +55,14 @@
 		}
 		reverse: new
 	}
+
+	flatten <- :lst {
+		fold: lst [] with: :acc el {
+			fold: el acc with: :iacc iel {
+				iel | iacc
+			}
+		}
+	}
 	
 	makeTree:size <- :lst :size {
 		ret <- 0
@@ -82,7 +90,6 @@
 	}
 	
 	get:fromTree:size <- :idx :tree :size {
-		print: #[1 tree size]
 		ret <- 0
 		half <- size / 2
 		if: size <= 2 {
@@ -103,7 +110,6 @@
 	
 	get:fromTree <- :idx :tree {
 		size <- tree value
-		print: #[0 size]
 		get: idx fromTree: (tree tail) size: size
 	}
 	
@@ -167,6 +173,7 @@
 	}
 
 	grid:get <- :grid :pos {
+		print: #[15 pos]
 		x <- pos value
 		y <- pos tail
 		get: x fromTree: (get: y fromTree: grid)
@@ -191,55 +198,37 @@
 		maxX <- (get: 0 fromTree: grid) value
 		((x >= 0) + (y >= 0) + (x < maxX) + (y < maxY)) > 0
 	}
-	
-    /*
-	ListGet <- :cell idx {
-		if: idx = 0 {cell value} else: {
-        ListGet: (cell tail) (idx - 1)
-		}
-	}
-	TupGet <- :cell depth size {
-		if: idx = 0 {cell value} else: { 
-        if: size = 1 {cell tail} else: {  // warning, out-of-bounds idx will return a value!
-		TupGet: (cell tail) (idx - 1) (size - 1)
-		}}
-	}
-
-	// rowmajor lists
-	GridGet <- :x y w h{
-		ListGet
-		...
-	}
-    */
 
 	visited <- 0
-	/*
-	advancer <- :listOfTupsLams {
+
+	advancer <- :continuations {
+		print: 5
 		notdone <- 1
 		while: { notdone } do: {
-			listOfLamTups <- fold: listOfLamTups [] with: :acc el{
-				ret <- 0
-				newTupLams <- (el tail):
-				
-	
-				// zero means "I have not found it"
-			
-				if: (el value) = 0 {
-					newTupLams <- (el tail):
-					if: (isInteger?: newTupLams) {
-						ret <- acc
-					} else: {
-						ret <- acc | newTupLams
-					}
-				} else: {
-					notdone <- 0
-					ret <- [(el tail)]
-				}
+			if: (continuations isInteger?) {
+				notdone <- 0
+			} else: {
+				print: 6
+				continuations <- flatten: (fold: continuations [] with: :acc el{
+					print: 7
+					ret <- acc
+					if: notdone {
+						ret <- el:
+						if: (ret isInteger?) {
+						} else: {
+							if: (ret value) {
+								notdone <- 0
+								ret <- (ret tail)
+							} else: {
+								ret <- (ret tail) | acc
+							}
+						}
+					} else: {}
+				})
 			}
 		}
-
+		continuations
 	}
-	*/	
 
 	calcPos <- :move from {
 		x <- from value
@@ -265,15 +254,21 @@
 			ret <- []
 			move <- 0
 			atpos <- 0
+			print: 9
 			if: (grid: grid inBounds?: myLoc) {
+				print: 10
 				if: (grid: visited get: myLoc) {
 				} else: {
+					print: 11
 					atpos <- grid: grid get: myLoc
 					if: (atpos = 2) + (atpos = 3) + (atpos = 4) {
+						print: 12
 						ret <- #[1 (reverse: path)]
 					} else: {
+						print: 13
 						visited <- grid: visited set: myLoc to: 1
 						if: atpos {
+							print: 14
 							move <- 0
 							while: { move < 4 } do: {
 								ret <- (makeContClos: grid (calcPos: move myLoc) move | path) | ret
@@ -282,41 +277,29 @@
 						} else: {}
 					}
 				}
-			} else: {}
+			} else: {
+				print: 42
+			}
 			ret
 		}
 	}
 
-	//scanFor <- :target visited {
-	//}
-	counterLoad <- 4
 	step <- :myState world {
+		print: -1
 		grid <- makeTree: (map: (world value) :row { makeTree: row })
-		lmState <- (world value) tail
+		print: 0
+		lmState <- (world tail) value
+		print: 1
 		myLoc <- (lmState tail) value
 		
-		
-		visited <- treeMap: grid :el { 0 }
-		/*
-		cont <- {
-			if: (grid: grid get: myLoc 
-			visited <- tree: visited set: myLoc to: 1
-		*/
-		
-		
-		
-		//myPos <- 
-		path <- [3 1 3 1] //scanFor: 2 3 [myPos]
-		move <- myState value
-		counter <- (myState tail) - 1
-		if: counter = 0 {
-			move <- move + 1
-			counter <- counterLoad
-			if: move = 4 {
-				move <- 0
-			} else: {}
-		} else: {}
-		#[0 ((path tail) value)]
+		print: 2
+		visited <- treeMap: grid :row {
+			treeMap: row :el { 0 }
+		}
+		print: 3
+		path <- advancer: [(makeContClos: grid myLoc [])]
+		print: #[4 path]
+		#[0 (path value)]
 	}
 	
 	main <- :initWorld mystery {
@@ -324,7 +307,4 @@
 	}
 }
 
-//does not work: 
-//someListOrTup get: 0
-//lambdaman program (step function) faulted TagMismatch