Il titolo è composto da "Sequence Index Digit Not".
Sfida:
Dato un numero intero n
che è >= 0
, genera il n
'numero numero della sequenza seguente.
Ecco i primi 50 elementi, con l'indice (indicizzato 0) sopra di esso:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
1 0 3 2 5 4 7 6 9 8 22 20 30 24 23 26 25 28 27 32 11 33 10 14 13 16 15 18 17 31 12 29 19 21 50 40 41 42 44 45 35 36 37 51 38 39 52 53 55 56 34
Come funziona questa sequenza?
Il numero all'indice n
deve essere il primo nell'ordine in cui non ci sono cifre in comune n
e non si è ancora verificato per gli indici precedenti. Quindi, quando osserviamo una sequenza normale come questa da 0-60
:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Definiamo i n
'valori in questo modo:
0
: Il primo numero (0
) contiene la stessa cifra, quindi cerchiamo il prossimo (1
), che non contiene la stessa cifra. Quindin=0
uscite1
.1
: Il primo numero (0
) non contiene la stessa cifra, quindin=1
genera0
.2
: Abbiamo già riscontrato0
e1
, e la cifra successiva (2
) contiene la stessa cifra, quindi cerchiamo la prossima (3
), che non contiene la stessa cifra. Quindin=2
uscite3
.- ...
10
: Ci siamo già incontrati0-9
, quindi il prossimo in linea è10
.10-19
contiene la cifra corrispondente1
,20
contiene la cifra corrispondente0
,21
contiene di1
nuovo la cifra corrispondente ,22
è valida, quindi glin=10
output22
.- eccetera.
Regole della sfida:
- Se la tua lingua è 1-indicizzata (o scegli di farlo), puoi iniziare la sequenza in
3 2 5 4 7 ...
(saltando1
atn=0
e at0
atn=1
). - L'indice minimo più grande che dovresti supportare è
25,000
. NOTA: la sequenza si arresta all'indice1,023,456,788
, poiché l'indice successivo in linea contiene tutte e 10 le cifre. - Puoi anche generare / restituire un array / elenco dell'intera sequenza fino all'indice incluso,
n
se lo desideri.
Regole generali:
- Questo è code-golf , quindi vince la risposta più breve in byte.
Non lasciare che le lingue di code-golf ti scoraggino dal pubblicare risposte con lingue non codegolfing. Prova a trovare una risposta il più breve possibile per "qualsiasi" linguaggio di programmazione. - Per la tua risposta valgono regole standard , quindi puoi usare STDIN / STDOUT, funzioni / metodo con i parametri corretti e tipo di ritorno, programmi completi. La tua chiamata.
- Sono vietate le scappatoie predefinite .
- Se possibile, aggiungi un link con un test per il tuo codice.
- Inoltre, si prega di aggiungere una spiegazione, se necessario.
Casi test:
Questa sequenza ha effettivamente creato coppie riguardanti l'indice e gli output. Se l'indice n
genera o
, indicizza le o
uscite n
. Quindi puoi inserire sia a sinistra che a destra, e l'uscita sarà dall'altra parte:
0 <-> 1 (this test case is optional)
2 <-> 3
10 <-> 22
12 <-> 30
34 <-> 50
89 <-> 100
111 <-> 200
112 <-> 300
199 <-> 322
2231 <-> 4456
9605 <-> 11118
19235 <-> 46000
23451 <-> 60668
25000 <-> 13674
Ecco una pastebin dei primi 25.001 casi di test se vuoi provarne altri.