In matematica, un modo per capire quale sia il tipo di una data relazione (lineare, quadratica, ecc.) È calcolare le differenze. Per fare ciò, prendi un elenco di valori y per i quali lo spazio tra i corrispondenti valori x è lo stesso e sottrai ciascuno dal numero sopra di esso, creando un elenco di numeri uno più corto dell'elenco precedente. Se l'elenco risultante è completamente composto da numeri identici, la relazione ha una differenza di 1 (è lineare). Se non sono identici, ripeti il processo sul nuovo elenco. Se ora sono identici, la relazione ha una differenza di 2 (è quadratica). Se non sono identici, è sufficiente continuare questo processo fino a quando non lo sono. Ad esempio, se si dispone dell'elenco di valori y [1,6,15,28,45,66] per aumentare in modo incrementale i valori x:
First Differences:
1
6 1-6 =-5
15 6-15 =-9
28 15-28=-13
45 28-45=-17
66 45-66=-21
Second differences:
-5
-9 -5+9 =4
-13 -9+13 =4
-17 -13+17=4
-21 -17+21=4
As these results are identical, this relation has a difference of 2
Il tuo compito:
Scrivi un programma o una funzione che, quando viene fornita una matrice di numeri interi come input, restituisce la differenza della relazione descritta dalla matrice, come spiegato sopra.
Ingresso:
Un array di numeri interi, che può essere di qualsiasi lunghezza> 1.
Produzione:
Un numero intero che rappresenta la differenza della relazione descritta dall'input.
Casi test:
Input => Output
[1,2,3,4,5,6,7,8,9,10] => 1
[1,4,9,16,25,36] => 2
[1,2,1] => 2 (when there is only one value left, all values are automatically identical, so the largest difference an array can have is equal to the length of the array-1)
"Hello World" => undefined behavior (invalid input)
[1,1,1,1,1,1,1,1,1] => 0 (all elements are already identical)
[1, 3, 9, 26, 66, 150, 313, 610] => 6
punteggio:
Questo è code-golf , il punteggio più basso in byte in ogni lingua vince per quella lingua. Il punteggio più basso in assoluto ottiene il segno di spunta verde.
[1,2,1]
dare 2?[1,2,1] -> [1,-1] -> [-2]
[1,3,9,26,66,150,313,610]
-> 6
se ti piace