A função β de Gödel usa três números naturais como argumentos.
É definido como β(x,y,z) = rem(x, 1 + (z + 1) · y) = rem(x, (z · y + y + 1) )
onde rem (a, b) denota o restante após a divisão inteira de a por b.
O lema β agora declara que:
Para qualquer sequência de números naturais (k_0, k_1,…, k_n), existem números naturais bec que, para todo i ≤ n, β (b, c, i) = k_i.
Gödel precisa de ajuda para encontrar b
e c
para qualquer entrada (k_0, k_1, … , k_n), k_i ∈ ℕ
.
Escreva uma função que tenha uma matriz de comprimento n
, preenchida com números naturais, e forneça uma b,c
saída possível que atenda ao lema da matriz.
Não obtenha soluções por força bruta!
(Na minha opinião totalmente pouco profissional, é uma força bruta quando você obtém um número e depois faz o cálculo. Isso é adivinhar o número e depois verificar se o palpite estava correto. O que eu quero ser codificado aqui é uma solução que calcula o números e não precisa verificar se eles cumprem o lema porque foram calculados para isso.)
Construa-os com as equações e informações fornecidas. O código mais curto ganha, pontos de bônus se você o fizer, Javascript
porque eu estou entrando nele:)
Exemplo:
[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)
até encontrar uma que funcione seria força bruta, e uma abordagem que corre no tempo linear no comprimento da entrada não seria, mas existe uma grande lacuna entre elas. Onde é traçada a linha?