如何识别6,5,4的骰子,以及如何在骰子满足其条件后最大限度地减少骰子的数量?
答案 0 :(得分:1)
听起来像学习有限状态机的练习。
基本的想法是你的“机器”在某种状态下启动,我们称之为“开始”。
你可以掷骰子三次以获得分数,所以你还必须记录掷骰子的次数。
每次掷骰后,您都会检查骰子,并根据当前状态和滚动内容,您的“机器”可能会转换为新状态。
你声明你必须按顺序滚动一个6,一个5和一个4(这暗示状态将如何转换)或同一滚动(告诉你可以跳过状态)。
那么这些其他州是什么?因为你必须滚动6然后是5然后是4,我们只需要调用状态,“SIX”,“FIVE”和“FOUR”。
在伪代码中:
int STATE_START = 6;
int STATE_SIX = 5;
int STATE_FIVE = 4;
int STATE_FOUR = 3;
int state = STATE_START;
int rolls = 0;
int[] dice
int score = 0;
do (while state != STATE_FOUR && rolls++ < 4) {
dice = rollDice();
do (while state != STATE_FOUR) {
if (dice.Contains(state)) {
state--;
}
else {
break;
}
}
}
if (state == STATE_FOUR) {
score = getScore(dice);
}