N番目の相違点

数学では、与えられた関係のタイプ(線形、二次など)が違いを計算することを理解する方法の1つです。これを行うには、対応するx値の間のギャップが同じy値のリストを取って、それより上の数字からそれぞれを引いて、前のリストより短い番号のリストを作成します。結果のリストが完全に同一の数字で構成されている場合、リレーションは1の差(リニア)を持ちます。同じでない場合は、新しいリストでプロセスを繰り返します。それらが今では同一である場合、その関係は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

あなたのタスク:

整数の配列が入力として与えられたときに、上で説明したように、配列で記述された関係の違いを返すプログラムまたは関数を記述します。

入力:

An array of integers, which may be of any length>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

得点:

This is ,
lowest score in bytes in each language wins for that language.
Lowest score overall gets the green checkmark.

ベストアンサー

Husk, 6 bytes

Thanks Leo for
letting me use his version that works for
[1,1,1,1,1,1]

←VE¡Ẋ-

オンラインで試してみてください!

説明

   ¡     Repeatedly apply function, collecting results in a list
    Ẋ-     Differences
 VE      Get the index of the first place in the list where all the elements are equal
←        Decrement

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です