La fonction β de Gödel prend trois nombres naturels comme arguments.
Il est défini comme β(x,y,z) = rem(x, 1 + (z + 1) · y) = rem(x, (z · y + y + 1) )
où rem (a, b) désigne le reste après la division entière de a par b.
Le β lemme déclare maintenant que:
Pour toute séquence de nombres naturels (k_0, k_1,…, k_n), il existe des nombres naturels b et c tels que, pour tout i ≤ n, β (b, c, i) = k_i.
Gödel a besoin d'aide pour trouver b
et c
pour toute entrée donnée (k_0, k_1, … , k_n), k_i ∈ ℕ
.
Écrivez une fonction qui prend un tableau de longueur n
, rempli de nombres naturels, et donne une b,c
sortie possible qui remplit le lemme du tableau.
N'obtenez pas de solutions par la force brute!
(À mon avis totalement non professionnel, c'est de la force brute lorsque vous obtenez un nombre pour la première fois et que vous effectuez ensuite le calcul. et n'a pas à vérifier s'ils respectent le lemme car ils ont été calculés pour le faire.)
Construisez-les avec les équations et les informations fournies. Le code le plus court gagne, des points bonus si vous le faites Javascript
parce que j'y vais juste:)
Exemple:
[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)
jusqu'à ce qu'elle en trouve une qui fonctionne serait de la force brute, et une approche qui s'exécute dans le temps de manière linéaire dans la longueur de l'entrée ne le serait pas, mais il y a un grand écart entre celles-ci. Où est la ligne tracée?