Trong toán học, một cách để tìm ra loại quan hệ đã cho (tuyến tính, bậc hai, v.v.) là gì để tính toán sự khác biệt. Để làm như vậy, bạn lấy một danh sách các giá trị y mà khoảng cách giữa các giá trị x tương ứng là như nhau và trừ đi từng giá trị từ số trên nó, tạo một danh sách các số ngắn hơn danh sách trước đó. Nếu danh sách kết quả hoàn toàn gồm các số giống nhau, thì mối quan hệ có chênh lệch 1 (nó là tuyến tính). Nếu chúng không giống nhau, thì bạn lặp lại quy trình trong danh sách mới. Nếu bây giờ chúng giống hệt nhau, mối quan hệ có chênh lệch là 2 (nó là bậc hai). Nếu chúng không giống nhau, bạn chỉ cần tiếp tục quá trình này cho đến khi chúng được. Ví dụ: nếu bạn có danh sách các giá trị y [1,6,15,28,45,66] để tăng dần các giá trị 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
Nhiệm vụ của bạn:
Viết chương trình hoặc hàm, khi được cung cấp một mảng số nguyên làm đầu vào, trả về sự khác biệt của mối quan hệ được mô tả bởi mảng, như được giải thích ở trên.
Đầu vào:
Một mảng các số nguyên, có thể có độ dài bất kỳ> 1.
Đầu ra:
Một số nguyên biểu thị sự khác biệt của mối quan hệ được mô tả bởi đầu vào.
Các trường hợp thử nghiệm:
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
Ghi điểm:
Đây là môn đánh gôn , điểm số thấp nhất tính theo byte trong mỗi ngôn ngữ sẽ giành chiến thắng cho ngôn ngữ đó. Điểm thấp nhất tổng thể được đánh dấu màu xanh lá cây.
[1,2,1]
cho 2? [1,2,1] -> [1,-1] -> [-2]
[1,3,9,26,66,150,313,610]
-> 6
nếu bạn thích