La funzione β di Gödel accetta tre numeri naturali come argomenti.
È definito come β(x,y,z) = rem(x, 1 + (z + 1) · y) = rem(x, (z · y + y + 1) )
dove rem (a, b) indica il resto dopo la divisione intera di a per b.
Il β Lemma ora afferma che:
Per qualsiasi sequenza di numeri naturali (k_0, k_1,…, k_n), ci sono numeri naturali bec che tali, per ogni i ≤ n, β (b, c, i) = k_i.
Gödel ha bisogno di aiuto per trovare b
e c
per ogni dato input (k_0, k_1, … , k_n), k_i ∈ ℕ
.
Scrivi una funzione che accetta una matrice di lunghezza n
, piena di numeri naturali, e fornisce un possibile b,c
output che soddisfa il Lemma per la matrice.
Non ottenere soluzioni con la forza bruta!
(Secondo la mia opinione totalmente poco professionale, è la forza bruta quando prima ottieni un numero e poi fai il calcolo. Questo è indovinare il numero e quindi vedere se l'indovinazione era corretta. Ciò che voglio essere codificato qui è una soluzione che calcola il numeri e non deve verificare se soddisfano il lemma perché sono stati calcolati per farlo.)
Costruiscili con le equazioni e le informazioni fornite. Il codice più corto vince, i punti bonus se lo fai Javascript
perché ci sto solo entrando:)
Esempio:
[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)
fino a quando non trova quello che funziona sarebbe una forza bruta, e un approccio che corre nel tempo lineare nella lunghezza dell'input non sarebbe, ma c'è un grande divario tra quelli. Dov'è tracciata la linea?