W matematyce jednym ze sposobów ustalenia, jaki typ danej relacji (liniowy, kwadratowy itp.) Jest obliczenie różnic. Aby to zrobić, weź listę wartości y, dla których odstęp między odpowiednimi wartościami x jest taki sam, i odejmij każdą z liczb powyżej, tworząc listę liczb o jedną krótszą niż poprzednia. Jeśli wynikowa lista jest całkowicie złożona z identycznych liczb, wówczas relacja ma różnicę 1 (jest liniowa). Jeśli nie są identyczne, powtórz proces na nowej liście. Jeśli są teraz identyczne, relacja ma różnicę 2 (jest kwadratowa). Jeśli nie są identyczne, po prostu kontynuuj ten proces, aż będą. Na przykład, jeśli masz listę wartości y [1,6,15,28,45,66] do stopniowego zwiększania wartości 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
Twoje zadanie:
Napisz program lub funkcję, która, gdy otrzyma tablicę liczb całkowitych jako dane wejściowe, zwraca różnicę relacji opisanej przez tablicę, jak wyjaśniono powyżej.
Wkład:
Tablica liczb całkowitych, które mogą mieć dowolną długość> 1.
Wydajność:
Liczba całkowita reprezentująca różnicę relacji opisanej przez dane wejściowe.
Przypadki testowe:
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
Punktacja:
To jest golf golfowy , najniższy wynik w bajtach w każdym języku wygrywa dla tego języka. Najniższy wynik ogółem otrzymuje zielony znacznik wyboru.
[1,2,1]
dać 2? [1,2,1] -> [1,-1] -> [-2]
[1,3,9,26,66,150,313,610]
-> 6
jeśli chcesz