Descrizione binaria ricorsiva
Di recente, ho dato il mio primo contributo a OEIS estendendo e aggiungendo un file b alla sequenza A049064 . La sequenza inizia con 0, quindi i valori successivi derivano dal dare una "descrizione binaria" dell'ultimo elemento.
Ad esempio, il secondo termine sarebbe 10, perché ce n'era uno 0nel primo elemento. Il terzo termine sarebbe 1110, perché ce n'era uno 1e uno 0. Il quarto sarebbe 11110. perché ci sono tre ( 11in binario!) se 1 uno 0. Di seguito è riportato un dettaglio del quinto termine per chiarire questo processo:
> 11110
> 1111 0 (split into groups of each number)
> 4*1 1*0 (get count of each number in each group)
> 100*1 1*0 (convert counts to binary)
> 100110 (join each group back together)
Ed ecco un esempio per passare dal 6 ° al 7 ° termine:
> 1110010110
> 111 00 1 0 11 0
> 3*1 2*0 1*1 1*0 2*1 1*0
> 11*1 10*0 1*1 1*0 10*1 1*0
> 111100111010110
Puoi consultare un programma di riferimento φ che ho fatto per calcolare i termini.
Il tuo lavoro
È necessario creare un programma o una funzione che accetta un numero ntramite input standard o argomenti di funzione e stampa la sequenza dal 1sttermine al (n+1)thtermine, separati da una nuova riga. Se desideri dare un'occhiata ai numeri più bassi, puoi fare riferimento al file b dalla pagina OEIS. Tuttavia, il tuo programma / funzione dovrebbe supportare 0 <= n <= 30, vale a dire fino al 31 ° termine. Questa non è un'impresa da poco, poiché A049064(30)è lunga oltre 140.000 cifre δ . Se vuoi vedere quale dovrebbe essere il 31 ° termine, l'ho messo su Pastebin .
Esempio di I / O
func(10)
0
10
1110
11110
100110
1110010110
111100111010110
100110011110111010110
1110010110010011011110111010110
1111001110101100111001011010011011110111010110
1001100111101110101100111100111010110111001011010011011110111010110
func(0)
0
func(3)
0
10
1110
11110
C'è solo una regola: nessuna scappatoia standard!
Questo è code-golf , quindi vince il numero di byte più basso.
φ - Gist può essere trovato qui , e una demo di ideone è qui .
δ - Nel caso te lo stessi chiedendo, le mie stime sulla lunghezza del centesimo termine lo collocano a circa 3,28x10 di lunghezza di 250 caratteri, il che sarebbe parecchio da calcolare per chiunque.
[0]\n[1, 0]\n[1, 1, 1, 0]\n...