# HG changeset patch # User Michael Pavone # Date 1406349649 25200 # Node ID c33dce59ce3d3ed168511e8776f28e48ce7f575b # Parent 89aa6d3165ee7931d4aaf5ca84539f72fd467d13 Store tree size in outer node so it does not need to be manually passed in diff -r 89aa6d3165ee -r c33dce59ce3d code/mike00.lm --- a/code/mike00.lm Fri Jul 25 21:16:25 2014 -0700 +++ b/code/mike00.lm Fri Jul 25 21:40:49 2014 -0700 @@ -37,7 +37,7 @@ reverse: new } - makeTree <- :lst size { + makeTree:size <- :lst :size { ret <- 0 sub <- 0 half <- size / 2 @@ -49,15 +49,21 @@ } else: { sub <- split: lst at: half ret <- #[ - (makeTree: (sub value) half) - (makeTree: (sub tail) size-half) + (makeTree: (sub value) size: half) + (makeTree: (sub tail) size: size-half) ] } } ret } + makeTree <- :lst { + size <- lst length + #[size (makeTree: lst size: size)] + } + get:fromTree:size <- :idx :tree :size { + print: #[1 tree size] ret <- 0 half <- size / 2 if: size <= 2 { @@ -76,6 +82,12 @@ ret } + get:fromTree <- :idx :tree { + size <- tree value + print: #[0 size] + get: idx fromTree: (tree tail) size: size + } + height <- 0 width <- 0 @@ -89,12 +101,11 @@ print: (length: lst) print: (map: lst :el { el + 1 }) print: (split: lst at: (length: lst) / 2) - size <- (length: lst) - tree <- makeTree: lst size + tree <- makeTree: lst print: tree - print: (get: 0 fromTree: tree size: size) - print: (get: 6 fromTree: tree size: size) - print: (get: 8 fromTree: tree size: size) + print: (get: 0 fromTree: tree) + print: (get: 6 fromTree: tree) + print: (get: 8 fromTree: tree) } } \ No newline at end of file