哥德尔的β函数采用三个自然数作为参数。
定义为 β(x,y,z) = rem(x, 1 + (z + 1) · y) = rem(x, (z · y + y + 1) )
其中rem(a,b)表示a除以b的整数后的余数。
β引理现在指出:
对于任何自然数序列(k_0,k_1,…,k_n),都有自然数b和c使得对于每个i≤n,β(b,c,i)= k_i。
哥德尔需要帮助找到b
并c
对于任何给定的输入(k_0, k_1, … , k_n), k_i ∈ ℕ
。
编写一个函数,该函数接受一个长度为length的数组n
,并用自然数填充,并给出b,c
满足该数组的引理的可能输出。
不要用蛮力获得解决方案!
(根据我完全不专业的观点,当您首先获得一个数字然后进行计算时,这是蛮力的。这是在猜测数字,然后看猜测是否正确。我想在这里编码的是一种解决方案数,并且不必检查它们是否满足引理,因为它们是故意这样做的。)
用给出的方程式和信息构造它们。最短的代码获胜,如果您这样做,将获得加分,Javascript
因为我只是参与其中:)
例:
[5, 19, 7, 8] -> (1344595, 19)
1344505 % (1 + (0 + 1) * 19) = 5
1344505 % (1 + (1 + 1) * 19) = 19
1344505 % (1 + (2 + 1) * 19) = 7
1344505 % (1 + (3 + 1) * 19) = 8
5
欢迎来到PPCG!这是一个很好的第一个问题,但是我建议添加一些测试用例以使其更加清晰。
—
Laikoni '17
@Tweakimp即便如此,一个可行的示例仍可以帮助澄清相当正式的定义。
—
Martin Ender's
尚不清楚什么才算是“蛮力”。显然,一种遍历所有对
—
彼得·泰勒
(b, c)
直到找到起作用的对的方法将是蛮力的,而在输入的长度上按时间线性运行的方法则不是强力方法,但是两者之间有很大的差距。画线在哪里?
有人说过Beta吗?
—
Beta Decay's