fix percentage bar fill

This commit is contained in:
Joseph Montanaro 2021-10-22 10:34:43 -07:00
parent 29e3e70712
commit ad29f04660
3 changed files with 12 additions and 9 deletions

View File

@ -1,10 +1,12 @@
# `cup` - CamelUp probability calculator # `cup` - CamelUp probability calculator
This tool calculates probable outcomes for the board game CamelUp. This tool calculates probable outcomes for the board game CamelUp. It can
It can calculate all possible outcomes for a single game leg in about 5ms, so effectively instantaneously. calculate all possible outcomes for a single game leg in about 5ms, so
Full-game calculations take a little bit longer and are not exact (since it isn't practical to simulate all possible full game states.) effectively instantaneously. Full-game calculations take a little bit longer
However it can easily simulate a million random games in about 80ms in the worst case, which should provide estimates accurate to within about 0.2%. and are not exact (since it isn't practical to simulate all possible full
(Numbers from running on a Ryzen 3700X.) game states.) However it can easily simulate a million random games in about
80ms in the worst case, which should provide estimates accurate to within
about 0.2%. (Numbers from running on a Ryzen 3700X.)
``` ```
Usage: Usage:

View File

@ -7,11 +7,12 @@ when isMainModule:
b.init b.init
b.setState(config.state, []) b.setState(config.state, [])
b.diceRolled = config.diceRolled b.diceRolled = config.diceRolled
echo b.showSpaces(1, 16)
let legScores = b.getLegScores let legScores = b.getLegScores
let gameScores = b.randomGames(1_000_000)
echo b.showSpaces(1, 16)
echo "\nCurrent leg probabilities:" echo "\nCurrent leg probabilities:"
echo legScores.showPercents() echo legScores.showPercents()
let gameScores = b.randomGames(1_000_000)
echo "\nFull game probabilities (1M simulations):" echo "\nFull game probabilities (1M simulations):"
echo gameScores.showPercents() echo gameScores.showPercents()

2
ui.nim
View File

@ -112,7 +112,7 @@ proc showPercents*(scores: ScoreSet): string =
var bar = repeat(" ", 20) var bar = repeat(" ", 20)
let percentage = round(pct * 100, 2) let percentage = round(pct * 100, 2)
# populate the progress bar # populate the progress bar
let barFill = int(round(pct * 100 / 20)) let barFill = int(round(pct * 20))
for i in 0 ..< barFill: for i in 0 ..< barFill:
bar[i] = '=' bar[i] = '='