Matematikte, belirli bir ilişkinin türünün (doğrusal, ikinci dereceden, vb.) Farkları hesaplamak olduğunu anlamanın bir yolu. Bunu yapmak için, karşılık gelen x değerleri arasındaki boşluğun aynı olduğu y değerlerinin bir listesini alırsınız ve her birini yukarıdaki sayıdan daha kısa bir sayı listesi oluşturarak yukarıdaki sayıdan çıkarın. Sonuçta ortaya çıkan liste tamamen aynı sayılardan oluşuyorsa, ilişkinin değeri 1'dir (doğrusaldır). Aynı değillerse, işlemi yeni listede tekrarlayın. Şimdi özdeşlerse, ilişkinin 2 farklılığı vardır (ikinci dereceden). Aynı değillerse, bu işleme onlar olana kadar devam edin. Örneğin, artan x değerleri için y değerleri [1,6,15,28,45,66] listeniz varsa:
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
Senin görevin:
Girdi olarak bir tamsayı dizisi verildiğinde, yukarıda açıklandığı gibi dizilim tarafından tanımlanan ilişkinin farkını döndüren bir program veya işlev yazın.
Giriş:
Herhangi bir uzunlukta> 1 olabilen bir tamsayı dizisi.
Çıktı:
Girdi tarafından açıklanan ilişkinin farkını temsil eden bir tam sayı.
Test Durumları:
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
puanlama:
Bu kod golf , her dilde bayt cinsinden en düşük puan, o dil için kazanıyor. Genel olarak en düşük puan yeşil onay işaretini alır.
[1,2,1]
2 vermek? [1,2,1] -> [1,-1] -> [-2]
[1,3,9,26,66,150,313,610]
-> 6
isterseniz