我想把牛和公牛的数量介于两个数字之间。其中一个由计算机生成,另一个由用户猜测。我已经解析了两个数字,现在我有两个列表,每个列表有三个元素,每个元素都是数字中的一个数字。所以:
237将给出列表[2,3,7]。我确保相关的索引被维护,一般的模式是:(hundreds, tens, units)。
这两个列表存储在两个列表中:machine和person。
算法1
所以,我写了以下代码,最直观的算法:
在循环开始之前,cows和bulls被初始化为0。for x in person:
if x in machine:
if machine.index(x) == person.index(x):
bulls += 1
print x,' in correct place'
else:
print x,' in wrong place'
cows += 1
我开始用电脑猜出的不同类型的数字来测试这个。
很随机,我决定277。我猜是447。在这里,我首先得到了这个算法可能行不通的线索。我有1头牛和0头公牛。我应该有一头牛和一头牛。
这是第一个算法的输出表:Guess Output Expected Output
447 0 bull, 1 cow 1 bull, 0 cow
477 2 bulls, 0 cows 2 bulls, 0 cows
777 0 bulls, 3 cows 2 bulls, 0 cows
所以很明显,当计算机随机选择的数字中有重复的数字时&#x