Created
June 9, 2014 02:13
-
-
Save RonJeffries/19b2a374baf8bf894b03 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// wanted a version where i could just use reduce but without building a Frame object ... | |
// expands rolls to include bonus values, e.g. | |
func testExpandRolls() { | |
let game = BowlingGame() | |
game.roll(5,4, 10, 5,5, 6,5) | |
var expanded = game.expandRolls() | |
XCTAssertEqualObjects(expanded, [5,4, 10,5,5, 5,5,6, 6,5], "expanded") | |
} | |
// resulting in easy score() | |
func score() -> Int { | |
return expandRolls().reduce(0,{$0+$1}) | |
} | |
// but expand isn't all that nice ... | |
func expandRolls() -> Int[] { | |
var result = Int[]() | |
var i = 0; | |
while i < rolls.count { | |
result += rolls[i] | |
result += rolls[i+1] | |
if ( rolls[i] == 10 ) { | |
result += rolls[i+2] | |
i++ | |
} else if rolls[i] + rolls[i+1] == 10 { | |
result += rolls[i+2] | |
i += 2 | |
} else { | |
i += 2 | |
} | |
} | |
return result | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi Ed, thanks ...
Well, I haven't tested it here so I could believe it wouldn't work. Offhand, it looks to me as if it might subscript off the end of the array. Mostly what I wanted to know was whether I liked the expand rolls idea. So as soon as I saw what it had to do, I knew I wanted to go another way, and stopped working this thread.
I've not posted the one I went with, which uses a framing object instead. I'll do that if I get a chance.