1

コレクションに N 個のアイテムがあり、1 から始まる値を割り当て、リストの「中心」で 0 まで下がり、1 まで直線的に戻ります。

したがって、アイテムが 5 つある場合:

0   1   2   3   4
1   0.5 0   0.5 1

6 つのアイテムの場合、中央の 2 つのアイテムは同じ値 0 になります。

0   1   2   3   4   5
1   0.5 0   0   0.5 1

現在index、値を 1 から上げるか下げるかをチェックして決定する一連の if ステートメントがあります。しかし、あまりにも面倒です。

このような一連の数値を作成するエレガントな方法はありますか (特に、可能であれば if ステートメントを使用しません)。

4

1 に答える 1

5

N >= 3が奇数の場合

f(x) = fabs(2*x-N+1)/(N-1)

N >= 4が偶数の場合

f(x) = (fabs(2*x-N+1) - 1)/(N-2)

if ステートメントを完全に取り除くには、次のように記述します。

f(x) = (fabs(2*x-N+1) + (N%2) - 1)/(N-2 + (N%2))

の偶数および奇数の値で機能しN >= 3ます。

于 2012-12-13T21:42:58.993 に答える