У математиці один із способів з'ясувати, який тип заданого відношення (лінійне, квадратичне тощо) - це обчислення різниць. Для цього ви берете список значень 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
якщо вам подобається