这是我想到的一个代码高尔夫球挑战。挑战在于编写尽可能短的代码,以使代码是否终止是一个悬而未决的问题。我的意思的示例可能是下面的一段python代码,从anwser改编成这个 cs stackexchange 问题。
def is_perfect(n):
return sum(i for i in range(1, n) if n % i == 0) == n
n = 3
while not is_perfect(n):
n = n + 2
数学家们猜测没有奇数完美的数字,但是它从未得到证明,因此没有人知道这段代码是否会终止。您能否提出较短的其他代码段(也许依赖于其他未解决的问题,例如Collatz猜想或孪生素数猜想),但是它们是否终止并不知道?
编辑:有些人提出了一个很好的附加规则-问题的解决方案应该是确定性的。尽管如果您可以使用不确定性找到更短的解决方案,可能会更加有趣。在这种情况下,规则是找到一个终止概率未知的代码段。
n=3
while sum(k*(n%k<1)for k in range(1,n))-n:n+=2
。