Mercurial > repos > icfp2012
diff src/sim.tp @ 48:365c83ea7658
merge and test
author | William Morgan <bill@mrgn.org> |
---|---|
date | Sun, 15 Jul 2012 18:32:22 -0700 |
parents | ccaecf1d6425 5d2e59cbbc7c |
children | 186fce0c98ee b0d89ee419c1 |
line wrap: on
line diff
--- a/src/sim.tp Sun Jul 15 18:16:50 2012 -0700 +++ b/src/sim.tp Sun Jul 15 18:32:22 2012 -0700 @@ -81,8 +81,11 @@ } consequenceOf <- :cur { - if: (cur eq: lambda) {collected <- collected + 1} - if: (cur eq: openLift) {mine succeeded!: true} + if: (cur eq: lambda) { + collected <- collected + 1 + mine addPoints: 25 + } + if: (cur eq: openLift) {mine succeeded!} } destination <- mine getCell: xPrime yPrime @@ -101,6 +104,13 @@ } } + clone <- { + myclone <- robot + myclone collected!: collected + myclone heldBreath!: heldBreath + myclone razors!: razors + myclone + } } commands set: "L" {ret move: (-1) 0 } commands set: "R" {ret move: 1 0 } @@ -120,7 +130,7 @@ _nextGrid <- #[] _robot <- null _ended <- false - _lambdaCount <- 0 + _succeeded <- false ret <- #{ grid <- in_grid @@ -183,16 +193,20 @@ obj x!: (calcX: Index) obj y!: (calcY: Index) } - lambdaCount <- {_lambdaCount} + lambdaCount <- 0 water <- 0 flooding <- 0 waterproof <- 10 - moves <- 0 + moves <- #[] + score <- 0 + maxScore <- { score + (lambdaCount - (_robot collected)) * 25 + lambdaCount * 50 } + addPoints <- :points { score <- score + points } ended <- {_ended} succeeded <- {_succeeded} - succeeded! <- :newval { - _ended <- newval - _succeeded <- newval + succeeded! <- { + _ended <- true + _succeeded <- true + addPoints: lambdaCount * 50 } doUpdate <- { foreach: grid :index value { @@ -222,7 +236,7 @@ }}} // end if } else: { if: (value eq: (cellTypes closedLift)) { - if: (_robot collected) = _lambdaCount { + if: (_robot collected) = lambdaCount { nextValue <- (cellTypes openLift) } } @@ -237,10 +251,16 @@ swapGrids: } advance <- :roboCmd { - _ended <- roboCmd = "A" + if: roboCmd = "A" { + _ended <- true + moves append: roboCmd + addPoints: (_robot collected) * 25 + } + if: (not: _ended) { _robot doCmd: roboCmd - moves <- moves + 1 + score <- score - 1 + moves append: roboCmd doUpdate: } self @@ -258,12 +278,19 @@ os write: 2 "\n" } } + os write: 2 "score: " . score . "\n" + os write: 2 "collected: " . (_robot collected) . "\n" + os write: 2 "moves: " + foreach: moves :idx m { + os write: 2 m + } + os write: 2 "\n" } clone <- { cgrid <- #[] foreach: grid :idx el { if: (el isrobot) { - cgrid append: (cellTypes robot) + cgrid append: (el clone) } else: { cgrid append: el } @@ -272,7 +299,13 @@ myclone water!: water myclone flooding!: flooding myclone waterproof!: waterproof - myclone moves!: moves + movesclone <- #[] + foreach: moves :idx el { + movesclone append: el + } + myclone moves!: movesclone + myclone score!: score + myclone lambdaCount!: lambdaCount myclone } } @@ -284,7 +317,7 @@ ret updatePos: _robot index } else: { if: (el eq: (cellTypes lambda)) { - _lambdaCount <- _lambdaCount + 1 + ret lambdaCount!: (ret lambdaCount) + 1 } } }