您的目标是编写一个程序,以6步或更少的动作解决所有Mastermind难题。
背景
策划大师是一个棋盘游戏。游戏的目的是准确猜测另一位玩家隐藏的4个彩色钉子的组合(颜色和顺序)。做出猜测时,另一位玩家以0到4之间的白色和/或红色钉子回应。红色的钉子是颜色和位置正确的地方。白色的钉子在其余部分中代表颜色,但位置不正确。如果猜测中有重复的颜色,则秘密中每种对应的颜色只会奖励一个钉子。(所以-如果机密中包含1个蓝色,并且猜测中有2个蓝色,其中一个在正确的位置,则将给出一个红色的钉子)。有6种不同的颜色,并且可以使用重复的颜色。
因此,例如,一个游戏可能会如下所示:(假设解决方案是Red Green Green Blue)
1: Blue Purple Black Green - 2 white pegs
2: Green Red Black Blue - 2 white pegs, 1 red peg
3: Green Green Green Blue - 3 red pegs
4: Red Green Green Blue - 4 red pegs
规则在Wikipedia上得到扩展
要求
- 该程序必须从stdin读取并写入stdout
- 为了简单起见,我将使用数字代替颜色。猜测的组合将是1到6之间的4个数字
他们必须将猜测结果输出为从1到6的4个空格分隔的数字,并以换行符结尾。例如:
1 5 2 2 \ n
程序猜测后,将在0到4之间的2个整数之间用空格分隔并以换行符结尾,然后将其作为输入。第一个是白色的钉子数量,第二个是红色的钉子数量。
- 输入“ 0 4”(4个红色挂钩)时,程序必须终止
- 该程序必须能够在不到6步的时间内解决任何难题(您的程序先输出,然后输入响应1圈)。由于能够用更少的钱解决问题,因此没有任何好处(由于证明的复杂性)。
- 该解决方案必须完全是内部的,并包含在源代码中。仅允许使用标准库。因此,该解决方案可能不依赖于任何其他文件(例如词典)或Internet。
输入/输出示例
> is your programs output
< is the responding input
Solution is 1 5 6 6
> 1 2 3 4
< 0 1
> 4 1 6 6
< 1 2
> 1 6 5 6
< 2 2
> 1 5 6 6
< 0 4
计分
- 这是纯粹而简单的Code Golf。以字节为单位的最短解决方案获胜。
这是我的第一个Code Golf问题。如果我做错了事,我深表歉意,但我已尽力确保绝对没有歧义,并尽可能避免制定规则。如果我一直模棱两可或不清楚,请随时提出问题。
1 2 3 4
返回0 1
?