Rekurencyjny opis binarny
Niedawno włożyłem swój pierwszy wkład w OEIS, rozszerzając i dodając plik b do sekwencji A049064 . Sekwencja zaczyna się od 0, a następnie uzyskiwane są kolejne wartości z „binarnego opisu” ostatniego elementu.
Na przykład drugi termin byłby 10, ponieważ był jeden 0w pierwszym elemencie. Trzeci termin byłby 1110, ponieważ był jeden 1i jeden 0. Czwarty byłby 11110. ponieważ są trzy ( 11binarnie!) 1 i jeden 0. Poniżej znajduje się podział piątego terminu, aby wyjaśnić ten proces:
> 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)
Oto przykład przejścia od szóstej do siódmej kadencji:
> 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
Możesz sprawdzić program referencyjny φ zrobiłem do obliczania terminów.
Twoja praca
Musisz utworzyć program lub funkcję, która przyjmuje liczbę nza pomocą standardowych argumentów wejściowych lub funkcyjnych i wypisuje sekwencję od 1stterminu do (n+1)thterminu, oddzielone znakiem nowej linii. Jeśli chcesz rzucić okiem na niższe liczby, możesz odnieść się do pliku b ze strony OEIS. Jednak Twój program / funkcja powinna obsługiwać 0 <= n <= 30, tj. Do 31 kadencji. To niemały wyczyn, bo A049064(30)ma ponad 140 000 cyfr δ . Jeśli chcesz zobaczyć, jaki powinien być 31 termin, umieściłem go na Pastebin .
Przykład I / O
func(10)
0
10
1110
11110
100110
1110010110
111100111010110
100110011110111010110
1110010110010011011110111010110
1111001110101100111001011010011011110111010110
1001100111101110101100111100111010110111001011010011011110111010110
func(0)
0
func(3)
0
10
1110
11110
Jest tylko jedna zasada: brak standardowych luk!
To jest golf golfowy , więc wygrywa najmniejsza liczba bajtów.
φ - Gist można znaleźć tutaj , a tutaj jest demo ideone .
δ - Na wypadek, gdybyś się zastanawiał, moje szacunki dotyczące długości 100 wyrażenia określają go na około 3,28 x 10 250 znaków, co byłoby całkiem sporo do obliczenia.
[0]\n[1, 0]\n[1, 1, 1, 0]\n...