Advanced Collecting Device Controller™から長い間データを収集しています。ログを確認すると、恐ろしいことに何かがひどく間違っていることがわかります。データには数字の最後のビットしか含まれていません。
幸いなことに、開始値がわかっていて、値が決して速く変化することはありません。つまり、スタート地点からの距離を見つけるだけで残りを回復できるということです。
チャレンジ
モジュラスNと中間値モジュロのリストを指定して、値が変化した量を計算するプログラムまたは関数を作成しますN。
数値の各ペア間の変化は常により小さいためN/2、各テストケースに対して有効な回答は1つだけです。
入力として、N2を超える整数と値のリストが、選択した形式で提供されます。入力は、STDINまたはコマンドラインまたは関数の引数を介して指定できます。
元の値が変更された量である単一の整数を出力します。出力はSTDOUTに出力されるか、返されます。
ルール
- プログラムは、未満の距離とモジュラスで機能する必要があり
2^20ます。 - あなたはそれを仮定するかもしれません:
Nは少なくとも3です。- リストには少なくとも2つの値があります。
- リスト内のすべての値は、少なくとも0未満です
N。 - 数値のすべての変更は未満です
N/2。
- それ以外は無効な入力であり、プログラムは必要な処理を実行できます。
- この正確な目的のための標準的な抜け穴、非標準ライブラリ、組み込み関数は禁止されています。
- これはcode-golfであるため、バイト単位の最短プログラムが優先されます。
テストケースの例
入力:
3
0 1 2 2 0 1 0 2 1 2 0 1 2 1 1
出力:
4
説明(値の例付き):
Value mod 3: 0 1 2 2 0 1 0 2 1 2 0 1 2 1 1
Value: 0 1 2 2 3 4 3 2 1 2 3 4 5 4 4
入力:
10
5 2 8 9 5
出力:
-10
説明(値の例付き):
Value mod 10: 5 2 8 9 5
Value: 15 12 8 9 5
無効な入力:
2
0 0 0 0 0
(モジュラスが小さすぎる)
6
2 5 4 2
(2と5の間の変化が大きすぎる)
:^;[5 2 8 9 5](\か?