Mercurial > repos > icfp2012
changeset 32:0a55ee387d69
Change grid order
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 14 Jul 2012 23:03:04 -0700 |
parents | f7a1daaec925 |
children | efa82c5e95c2 |
files | src/sim.tp |
diffstat | 1 files changed, 29 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/src/sim.tp Sat Jul 14 21:27:36 2012 -0700 +++ b/src/sim.tp Sat Jul 14 23:03:04 2012 -0700 @@ -102,13 +102,19 @@ self } printGrid <- { - grid foreach: :index value { - os write: 2 (value str) - if: index % width = width - 1 { + cur <- (grid length) - width + col <- 0 + while: {cur >= 0} do: { + os write: 2 ((grid get: cur) str) + cur <- cur + 1 + col <- col + 1 + if: col = width { + col <- 0 + cur <- cur - (width + width) os write: 2 "\n" } } - } + } } foreach: in_grid :index el{ nextGrid append: el @@ -119,38 +125,39 @@ } ret } + fromStr <- :str { strLen <- str byte_length: maxCol <- 0 - col <- 0 - rows <- 0 nl <- (cellTypes newline) id blank <- cellTypes empty + lines <- #[] + curline <- #[] eachbyte: str :index element { if: element = nl { + col <- curline length maxCol <- if: col > maxCol {col} else: {maxCol} - col <- 0 - rows <- rows + 1 + lines append: curline + curline <- #[] } else: { - col <- col + 1 + curline append: (cellTypes find: element) } } - col <- 0 grid <- #[] - eachbyte: str :index element { - if: element = nl { - // add spaces - while: { col < maxCol } do: { - grid append: blank - col <- col + 1 - } - col <- 0 - } else: { - grid append: (cellTypes find: element) - col <- col + 1 + cur <- (lines length) - 1 + while: { cur >= 0 } do: { + curline <- (lines get: cur) + foreach: curline :idx el { + grid append: el } + extra <- maxCol - (curline length) + while: { extra > 0 } do: { + grid append: blank + extra <- extra - 1 + } + cur <- cur - 1 } - new: grid maxCol rows + new: grid maxCol (lines length) } }