我在某处看到了这个问题。给定一个8位数字,从左到右第一位表示数字中有多少个0,第二位表示数字中有多少个1,第三位表示数字中有多少个2,以此类推,直到第8位表示数字中有多少个7。请找出这个数字。我用Python写了一段代码来查找数字。除了上述条件之外,我还增加了一些额外的检查,例如“数字各位数之和应为8”和“数字中不应包含8或9”。以下是我粘贴的代码。这只是暴力搜索,因为我要检查每个数字是否符合条件。我很好奇是否有更好的解决方法
def returnStat(number, digit, count):
number = str(number)
digit = str(digit)
print "Analysing for ",digit," to see if it appears ",count, " times in ",number,"."
actCnt = number.count(digit)
count = str(count)
actCnt = str(actCnt)
if (actCnt == count):
return 1
else:
return 0
def validateNum(number):
numList = str(number)
if '8' in numList:
print "Skipping ",number, " since it has 8 in it"
return (-1)
elif '9' in numList:
print "Skipping ",number, " since it has 9 in it"
return (-1)
elif (sum(int(digit) for digit in numList) != 8):
print "Skipping ",number, " since its sum is not equal to 8"
return (-1)
index = 0
flag = 0
for num in numList:
if (returnStat(number,index,num)) :
index = index+1
continue
else:
flag = 1
break
if (flag == 1):
return (-1)
else:
return number
for num in range(0,80000000):
number = '{number:0{width}d}'.format(width=8,number=num)
desiredNum = "-1"
desiredNum = validateNum(number)
if (desiredNum == -1):
print number," does not satisfy all "
continue
else:
print "The number that satisfies all contition is ",number
break