Sie haben lange Zeit Daten von einem Advanced Collecting Device Controller ™ gesammelt . Sie überprüfen die Protokolle und stellen zu Ihrem Entsetzen fest, dass etwas furchtbar schief gelaufen ist: Die Daten enthalten nur die letzten Bits der Zahlen!
Zum Glück kennen Sie den Startwert und wissen, dass sich der Wert nie schnell ändert. Das heißt, Sie können den Rest wiederherstellen, indem Sie nur die Entfernung vom Start finden.
Herausforderung
Sie schreiben ein Programm oder eine Funktion, um den Betrag zu berechnen, um den sich ein Wert geändert hat, wenn ein Modul Nund eine Liste der Zwischenwerte modulo gegeben sind N.
Der Wechsel zwischen jedem Zahlenpaar ist immer kleiner alsN/2 , sodass es für jeden Testfall nur eine gültige Antwort gibt.
Als Eingabe erhalten Sie eine Ganzzahl N> 2 und eine Werteliste in einem Format Ihrer Wahl. Die Eingabe kann über STDIN oder Befehlszeilen- oder Funktionsargumente erfolgen.
Sie geben eine einzelne Ganzzahl aus, den Betrag, um den sich der ursprüngliche Wert geändert hat. Die Ausgabe kann auf STDOUT gedruckt oder zurückgesendet werden.
Regeln
- Ihr Programm muss für alle Entfernungen und Module arbeiten, die kleiner als
2^20. - Sie können davon ausgehen, dass:
Nist zumindest3.- Die Liste hat mindestens 2 Werte.
- Alle Werte in der Liste sind mindestens 0 und kleiner als
N. - Alle Änderungen in den Zahlen sind kleiner als
N/2.
- Alles andere ist eine ungültige Eingabe, und Ihr Programm kann tun, was es will.
- Standardlücken, nicht standardisierte Bibliotheken und integrierte Funktionen für diesen Zweck sind verboten.
- Das ist Code-Golf , also gewinnt das kürzeste Programm in Bytes.
Beispiel Testfälle
Eingang:
3
0 1 2 2 0 1 0 2 1 2 0 1 2 1 1
Ausgabe:
4
Erklärung (mit Beispielwert):
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
Eingang:
10
5 2 8 9 5
Ausgabe:
-10
Erklärung (mit Beispielwert):
Value mod 10: 5 2 8 9 5
Value: 15 12 8 9 5
Ungültige Eingaben:
2
0 0 0 0 0
(zu kleiner Modul)
6
2 5 4 2
(zu großer Wechsel zwischen 2 und 5)
:^;[5 2 8 9 5](\?