Supponiamo che una sottostringa sia una sezione continua di una stringa originale. Ad esempio catè una sottostringa di concatenate. Diremo che una sottostringa corretta è una sottostringa che non è uguale alla stringa originale. Ad esempio concatenateè una sottostringa concatenatema non una sottostringa corretta. (le stringhe a carattere singolo non hanno sottostringhe appropriate)
Definiremo ora una sequenza usando questi termini. Il n esimo termine in questa sequenza sarà il numero più piccolo in modo tale che non v'è una vera e propria sottostringa della sua rappresentazione binaria che non è una sottostringa di qualsiasi termine precedente nella sequenza. Il primo termine è 10.
Come esercizio, generiamo i primi 5 termini. Lavorerò in binario per semplificare le cose.
Il primo termine è 10. Poiché 11il numero più piccolo successivo, ha solo una sottostringa corretta, 1che è anche una sottostringa di 10, 11non è nella sequenza. 100tuttavia contiene la sottostringa corretta 00che non è una sottostringa di 10così 100è il nostro prossimo termine. Il prossimo è 101che contiene la sottostringa corretta unica che 01lo aggiunge alla sequenza, quindi 110contiene la sottostringa corretta 11che è nuova aggiungendola alla sequenza.
Ora abbiamo
10, 100, 101, 110
111è il prossimo ma contiene solo le sottostringhe 1e 11non è un termine. 1000tuttavia contiene l' 000aggiunta alla sequenza.
Ecco i primi termini della coppia in decimale
2, 4, 5, 6, 8, 9, 10, 11, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50, 54, 56, 58
Compito
O
Prendere n come input e generare il n esimo termine in questa sequenza (0 o 1 indicizzato)
Emette continuamente i termini della sequenza
Questo è il codice-golf le risposte sono segnate in byte con meno byte meglio.
n)?
a(36)è 47 (1 indicizzato).