В математике одним из способов выяснить, какой тип данного отношения (линейный, квадратичный и т. Д.) Является вычисление различий. Для этого вы берете список значений y, для которых промежуток между соответствующими значениями x одинаков, и вычитаете каждое из числа над числом над ним, создавая список чисел на один короче предыдущего списка. Если результирующий список полностью состоит из одинаковых чисел, то отношение имеет разность 1 (оно является линейным). Если они не идентичны, то вы повторите процедуру в новом списке. Если они теперь идентичны, отношение имеет разность 2 (она квадратичная). Если они не идентичны, вы просто продолжаете этот процесс, пока они не будут идентичны. Например, если у вас есть список значений y [1,6,15,28,45,66] для постепенно увеличивающихся значений 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
Твое задание:
Напишите программу или функцию, которая, когда в качестве входных данных передается массив целых чисел, возвращает разницу отношения, описанного массивом, как описано выше.
Входные данные:
Массив целых чисел, который может иметь любую длину> 1.
Выход:
Целое число, представляющее разность отношений, описываемых входными данными.
Тестовые случаи:
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
Подсчет очков:
Это код-гольф , на этом языке выигрывает наименьшая оценка в байтах на каждом языке. Самая низкая оценка в целом получает зеленую галочку.
[1,2,1]
дать 2? [1,2,1] -> [1,-1] -> [-2]
[1,3,9,26,66,150,313,610]
-> 6
если хотите