changeset 14:ce68c8a607ee

Added a new file for experimenting with some helper functions
author Michael Pavone <pavone@retrodev.com>
date Fri, 25 Jul 2014 21:04:14 -0700
parents 451043a65ff7
children 4bc308c03952
files code/mike00.lm
diffstat 1 files changed, 96 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/code/mike00.lm	Fri Jul 25 21:04:14 2014 -0700
@@ -0,0 +1,96 @@
+#{
+	length <- :lst {
+		len <- []
+		while: { not: (lst isInteger?)} do: {
+			lst <- lst tail
+			len <- len + 1
+		}
+		len
+	}
+	
+	reverse <- :lst {
+		new <- []
+		while: { not: (lst isInteger?)} do: {
+			new <- (lst value) | new
+			lst <- lst tail
+		}
+		new
+	}
+
+	split:at <- :lst :pos {
+		first <- []
+		i <- 0
+		while: { i < pos } do: {
+			first <- (lst value) | first
+			lst <- lst tail
+			i <- i + 1
+		}
+		#[(reverse: first) lst]
+	}
+	
+	map <- :lst fun {
+		new <- []
+		while: { not: (lst isInteger?) } do: {
+			new <- (fun: (lst value)) | new
+			lst <- lst tail
+		}
+		reverse: new
+	}
+	
+	makeTree <- :lst size {
+		ret <- 0
+		sub <- 0
+		half <- size / 2
+		if: size = 2 {
+			ret <- #[(lst value) ((lst tail) value)]
+		} else: {
+			if: size = 1 {
+				ret <- lst
+			} else: {
+				sub <- split: lst at: half
+				ret <- #[
+					(makeTree: (sub value) half)
+					(makeTree: (sub tail) size-half)
+				]
+			}
+		}
+		ret
+	}
+	
+	get:fromTree:size <- :idx :tree :size {
+		ret <- 0
+		half <- size / 2
+		if: size <= 2 {
+			if: idx = 0 {
+				ret <- tree value
+			} else: {	
+				ret <- tree tail
+			}
+		} else: {
+			if: idx < half {
+				ret <- get: idx fromTree: (tree value) size: half
+			} else: {
+				ret <- get: idx-half fromTree: (tree tail) size: size-half
+			}
+		}
+		ret
+	}
+	
+	height <- 0
+	width <- 0
+	
+	main <- {
+		/* map <- initWorld value
+		height <- map length
+		width <- (map value) length
+		*/
+		
+		lst <- [1 2 3 4 5 6 7 8 9]
+		print: (length: lst)
+		print: (map: lst :el { el + 1 })
+		print: (split: lst at: (length: lst) / 2)
+		tree <- makeTree: lst (length: lst)
+		print: tree
+	}
+	
+}
\ No newline at end of file