Dalam matematika, salah satu cara untuk mencari tahu apa jenis hubungan yang diberikan (linear, kuadratik, dll) adalah menghitung perbedaan. Untuk melakukannya, Anda mengambil daftar nilai y yang selisih antara nilai x koresponden sama, dan kurangi masing-masing dari angka di atasnya, buat daftar angka yang lebih pendek dari daftar sebelumnya. Jika daftar yang dihasilkan sepenuhnya terdiri dari angka yang sama, maka hubungannya memiliki perbedaan 1 (itu linier). Jika tidak identik, maka Anda ulangi proses pada daftar baru. Jika mereka sekarang identik, hubungannya memiliki perbedaan 2 (kuadrat). Jika tidak identik, Anda cukup melanjutkan proses ini sampai benar. Misalnya, jika Anda memiliki daftar nilai y [1,6,15,28,45,66] untuk peningkatan nilai x secara bertahap:
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
Tugas Anda:
Tulis program atau fungsi yang, ketika diberi array bilangan bulat sebagai input, mengembalikan perbedaan hubungan yang dijelaskan oleh array, seperti dijelaskan di atas.
Memasukkan:
Array bilangan bulat, yang panjangnya bisa> 1.
Keluaran:
Integer mewakili perbedaan hubungan yang dijelaskan oleh input.
Kasus uji:
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
Mencetak:
Ini adalah kode-golf , skor terendah dalam byte di setiap bahasa menang untuk bahasa itu. Skor terendah secara keseluruhan mendapat tanda centang hijau.
[1,2,1]
memberi 2? [1,2,1] -> [1,-1] -> [-2]
[1,3,9,26,66,150,313,610]
-> 6
jika Anda suka