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 by cpara 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,csalida 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 Javascriptporque 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?