diff options
author | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2017-07-20 13:13:30 -0400 |
---|---|---|
committer | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2017-07-20 13:13:30 -0400 |
commit | 427149c9a4c4e0b389520d67199af01ad3c3f0c2 (patch) | |
tree | e1356f5633c51a92a0fa286a16f74d7d57f85e5e /src | |
parent | ddc5f52e7591834d291f9728da6480fd4af3a864 (diff) |
Implement keepHigh
Diffstat (limited to 'src')
-rw-r--r-- | src/dice.js | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/dice.js b/src/dice.js index b60af68..5e3b975 100644 --- a/src/dice.js +++ b/src/dice.js @@ -56,6 +56,25 @@ const explode = (die1, die2) => { } } +const keepHigh = (die1, die2) => { + return () => { + const numberToKeep = roll(die1) + let rolls = die2().map(die => [die, die()]) + rolls.sort((a, b) => (a[1] - b[1])).reverse() + return rolls.slice(0, numberToKeep).map(pair => { + let returnedOriginal = false + return () => { + if (!returnedOriginal) { + returnedOriginal = true + return pair[1] + } else { + return pair[0]() + } + } + }) + } +} + exports.pool = pool exports.roll = roll exports.constant = constant @@ -64,3 +83,4 @@ exports.add = add exports.subtract = subtract exports.negative = negative exports.explode = explode +exports.keepHigh = keepHigh |