数学では、与えられた関係のタイプ(線形、二次など)を把握する1つの方法は、差を計算することです。これを行うには、対応するx値間のギャップが同じy値のリストを取得し、その上の数値からそれぞれを減算し、前のリストより1つ短い数値のリストを作成します。結果のリストが完全に同一の数値で構成されている場合、関係には1の差があります(線形です)。同一でない場合は、新しいリストでプロセスを繰り返します。それらが現在同一である場合、関係には2の差があります(2次です)。それらが同一でない場合は、それらが同一になるまでこのプロセスを続行します。たとえば、x値を増分的に増やすためのy値[1,6,15,28,45,66]のリストがある場合:
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
得点:
これはcode-golfで、各言語のバイト単位の最低スコアがその言語で勝ちます。総合的に最低スコアは緑色のチェックマークを取得します。
[1,2,1]
2を与えるべきではありませんか?[1,2,1] -> [1,-1] -> [-2]
[1,3,9,26,66,150,313,610]
> - 6
あなたが好きなら