La función β de Gödel toma tres números naturales como argumentos.
Se define como β(x,y,z) = rem(x, 1 + (z + 1) · y) = rem(x, (z · y + y + 1) )
donde rem (a, b) denota el resto después de la división entera de a por b.
El β Lemma ahora dice que:
Para cualquier secuencia de números naturales (k_0, k_1, ..., k_n), hay números naturales byc tales que, para cada i ≤ n, β (b, c, i) = k_i.
Gödel necesita ayuda para encontrar b
y c
para cualquier entrada dada (k_0, k_1, … , k_n), k_i ∈ ℕ
.
Escriba una función que tome una matriz de longitud n
, llena de números naturales, y dé una b,c
salida posible que cumpla el Lema de la matriz.
¡No obtengas soluciones por fuerza bruta!
(En mi opinión totalmente poco profesional, es la fuerza bruta cuando obtienes un número y luego haces el cálculo. Eso es adivinar el número y luego ver si la suposición es correcta. Lo que quiero que se codifique aquí es una solución que calcula el números y no tiene que verificar si cumplen con el lema porque fueron calculados para hacerlo).
Construirlos con las ecuaciones y la información dada. El código más corto gana, puntos de bonificación si lo haces Javascript
porque solo estoy entrando en él:)
Ejemplo:
[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
(b, c)
hasta encontrar uno que funcione sería la fuerza bruta, y un enfoque que se ejecute en el tiempo lineal en la longitud de la entrada no lo sería, pero hay una gran brecha entre ellos. ¿Dónde está dibujada la línea?