Vous collectez des données depuis un Advanced Collecting Device Controller ™ depuis longtemps. Vous consultez les journaux, et à votre horreur vous découvrez que quelque chose a terriblement mal tourné: les données ne contiennent que les derniers bits des chiffres!
Heureusement, vous connaissez la valeur de départ et la valeur ne change jamais rapidement. Cela signifie que vous pouvez récupérer le reste en trouvant simplement la distance depuis le début.
Défi
Vous écrirez un programme ou une fonction pour calculer le montant d'une valeur a changé, étant donné un module Net une liste des valeurs intermédiaires modulo N.
Le changement entre chaque paire de nombres est toujours inférieur àN/2 , il n'y aura donc qu'une seule réponse valide pour chaque cas de test.
Vous recevrez en entrée un entier N> 2 et une liste de valeurs, dans un format de votre choix. L'entrée peut être donnée via STDIN ou la ligne de commande ou des arguments de fonction.
Vous afficherez un seul entier, le montant de la valeur d'origine a changé. La sortie peut être imprimée sur STDOUT ou renvoyée.
Règles
- Votre programme doit fonctionner pour n'importe quelle distance et module inférieur à
2^20. - Vous pouvez supposer que:
Nest au moins3.- La liste a au moins 2 valeurs.
- Toutes les valeurs de la liste sont au moins 0 et inférieures à
N. - Tous les changements dans les nombres sont inférieurs à
N/2.
- Tout le reste est une entrée invalide et votre programme peut faire ce qu'il veut.
- Les failles standard, toutes les bibliothèques non standard et les fonctions intégrées à cet effet sont interdites.
- Il s'agit de code-golf , donc le programme le plus court en octets l'emporte.
Exemples de cas de test
Contribution:
3
0 1 2 2 0 1 0 2 1 2 0 1 2 1 1
Production:
4
Explication (avec exemple de valeur):
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
Contribution:
10
5 2 8 9 5
Production:
-10
Explication (avec exemple de valeur):
Value mod 10: 5 2 8 9 5
Value: 15 12 8 9 5
Entrées non valides:
2
0 0 0 0 0
(module trop petit)
6
2 5 4 2
(changement trop important entre 2 et 5)
:^;[5 2 8 9 5](\?