我希望:
In [1]: check('ABCD', 'ABCD')
Out[1]: (4, 0)
In [2]: check('AAAA', 'ABCD')
Out[2]: (1, 0)
In [3]: check('AADA', 'ABCD')
Out[3]: (1, 1)
In [4]: check('ADDA', 'ABCD')
Out[4]: (1, 1)
In [5]: check('ADDB', 'ABCD')
Out[5]: (1, 2)
函数检查有两个参数,第一个是猜测,第二个是正确的代码。
在“Out”中,第一个数字是正确位置的正确字母数。
第二个是正确的字母数,但不在正确的位置。
使用我的代码,我可以毫无问题地找到第一个数字,但第二个数字给我带来了困难,因为我无法找到一个不算重复的代码。
i、 e:如果我做了check('ADDB', 'ABCD')
,我得到(1,4)
,因为它在正确的位置计算了一个(不应该),两个“D”(应该算为1)和B(这个可以)。
代码如下:
def check(guess, code):
cInCode = 0 # letter in code but wrong place
cInPlace = 0 # right letter & right place
for x in range(0, len(code)):
if code[x]==guess[x]:
cInPlace += 1
cInCode += code.count(guess[x])
return '('+str(cInPlace)+','+str(cInCode)+')'
比主要答案短的另一个答案:
最简单的方法可能是首先统计所有公共元素,这可以通过
collections.Counter
(https://docs.python.org/3/library/collections.html#collections.Counter)完成。如果然后减去位于正确位置的元素,将得到位于错误位置的常见元素相关问题 更多 >
编程相关推荐