ในคณิตศาสตร์วิธีหนึ่งที่จะคิดออกว่าประเภทของความสัมพันธ์ที่กำหนด (เส้นตรง, กำลังสอง, ฯลฯ ) คือการคำนวณความแตกต่าง ในการทำเช่นนั้นคุณจะต้องบันทึกรายการค่า 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
หากคุณต้องการ