Ogni numero può essere rappresentato usando una sequenza di resti infinitamente lunga. Ad esempio, se prendiamo il numero 7 ed eseguiamo 7mod2
, quindi 7mod3
, quindi 7mod4
, e così via, otteniamo 1,1,3,2,1,0,7,7,7,7,....
.
Tuttavia, abbiamo bisogno della sottosequenza residua più breve possibile che può ancora essere utilizzata per distinguerla da tutti i numeri inferiori. Usando di nuovo 7, [1,1,3]
è la sottosequenza più breve, perché tutte le sottosequenze precedenti non iniziano con [1,1,3]
:
0: 0,0,0,0...
1: 1,1,1,1...
2: 0,2,2,2...
3: 1,0,3,3...
4: 0,1,0,4...
5: 1,2,1,0...
6: 0,0,2,1...
Si noti che [1,1]
non funziona per rappresentare 7, perché può anche essere usato per rappresentare 1. Tuttavia, è necessario eseguire l'output [1]
con un input di 1.
Input Output
Il tuo input è un numero intero non negativo. È necessario generare una sequenza o un elenco della sequenza di residui di lunghezza minima come definito sopra.
Casi test:
0: 0
1: 1
2: 0,2
3: 1,0
4: 0,1
5: 1,2
6: 0,0,2
7: 1,1,3
8: 0,2,0
9: 1,0,1
10: 0,1,2
11: 1,2,3
12: 0,0,0,2
30: 0,0,2,0
42: 0,0,2,2
59: 1,2,3,4
60: 0,0,0,0,0,4
257: 1,2,1,2,5,5
566: 0,2,2,1,2,6,6
1000: 0,1,0,0,4,6,0,1
9998: 0,2,2,3,2,2,6,8,8,10
9999: 1,0,3,4,3,3,7,0,9,0
Ecco le prime 10.000 sequenze , nel caso tu sia interessato (i numeri di riga sono disattivati di 1).
Questo è un codice-golf , quindi rendilo il più corto possibile nella tua lingua preferita. Punti bonus falsi per tutte le risposte veloci!