gpt4 book ai didi

python - 查找满足特定条件的数字的优化方法

转载 作者:太空狗 更新时间:2023-10-30 03:00:19 25 4
gpt4 key购买 nike

我在哪里看到过这个问题。有一个8位数字。从左到右的第一个数字表示数字中有多少个零。第二位数字告诉您数字中有多少个 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

最佳答案

你可以更进一步,而不是简单地说 8 或 9 的数字是不可能的。

最后一位可以大于 0 吗?答案是不。如果最后一位是 1,这意味着其他地方有一个 7。但是,如果有 7,则表示同一个数字出现了 7 次。这显然是不可能的。因此,最后一位必须为 0。

所以我们有 xxxxxxx0。

倒数第二个数字呢?

如果xxxxxx10,则至少有一个6,表示相同的数字出现了6次。我们可以试试60000010,但这是不正确的,因为有一个1,应该体现在第二位。倒数第二位不能大于1,因为2表示有2个六,也就是说一个数出现了6次,而另一个数也出现了6次,这是不可能的。

所以我们有 xxxxxx00。

如果xxxxx100,那么至少有一个5,表示相同的数字出现了5次。让我们从 51000100 开始。差不多,但是现在有 2 个 1。所以它应该是 52000100。但是等等,现在有一个 1。和一个 2。所以我们尝试 52100100。但是现在我们只有 4 个 0。我们不能有 xxxxx200,因为这意味着有 2 个 5,如上所述,这是不可能的。

所以我们有 xxxxx000。

如果 xxxx1000,我们可以尝试 40001000,不,41001000,不,42101000。

啊,就是这样。 42101000。

关于python - 查找满足特定条件的数字的优化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29810620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com