Raccogli dati da un Advanced Collecting Device Controller ™ da molto tempo. Controlli i registri e con tuo orrore scopri che qualcosa è andato terribilmente storto: i dati contengono solo gli ultimi bit dei numeri!
Fortunatamente, conosci il valore iniziale e che il valore non cambia mai rapidamente. Ciò significa che puoi recuperare il resto semplicemente trovando la distanza dall'inizio.
Sfida
Scriverai un programma o una funzione per calcolare la quantità modificata da un valore, dato un modulo Ne un elenco dei valori intermedi modulo N.
Il cambio tra ogni coppia di numeri è sempre inferiore aN/2 , quindi ci sarà una sola risposta valida per ogni caso di test.
Ti verrà dato come input un numero intero N> 2 e un elenco di valori, in un formato a tua scelta. L'input può essere fornito tramite STDIN o riga di comando o argomenti di funzione.
Verrà emesso un singolo numero intero, la quantità del valore originale è stata modificata. L'output può essere stampato su STDOUT o restituito.
Regole
- Il programma deve funzionare per qualsiasi distanza e modulo inferiori a
2^20. - Puoi presumere che:
Nè almeno3.- L'elenco ha almeno 2 valori.
- Tutti i valori nell'elenco sono almeno 0 e inferiori a
N. - Tutte le modifiche ai numeri sono inferiori a
N/2.
- Qualsiasi altra cosa è un input non valido e il tuo programma può fare quello che vuole.
- Sono vietate scappatoie standard, eventuali librerie non standard e funzioni integrate per questo preciso scopo.
- Questo è code-golf , quindi vince il programma più breve in byte.
Esempi di casi di test
Ingresso:
3
0 1 2 2 0 1 0 2 1 2 0 1 2 1 1
Produzione:
4
Spiegazione (con valore di esempio):
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
Ingresso:
10
5 2 8 9 5
Produzione:
-10
Spiegazione (con valore di esempio):
Value mod 10: 5 2 8 9 5
Value: 15 12 8 9 5
Ingressi non validi:
2
0 0 0 0 0
(modulo troppo piccolo)
6
2 5 4 2
(cambio troppo grande tra 2 e 5)
:^;[5 2 8 9 5](\?