Powiedzmy, że podciąg to dowolna ciągła sekcja oryginalnego łańcucha. Na przykład cat
jest podciąg concatenate
. Powiemy, że poprawny podciąg to podciąg, który nie jest równy oryginalnemu ciągowi. Na przykład concatenate
jest podciągiem, concatenate
ale nie jest właściwym podciągiem. (ciągi jednoznakowe nie mają odpowiednich podciągów)
Teraz zdefiniujemy sekwencję na podstawie tych terminów. N p terminu w tej sekwencji będzie najmniejsza ilość tak, że nie jest to właściwy podciąg jego binarną, która nie jest podłańcuchem wcześniejszej terminu w sekwencji. Pierwszy termin to 10
.
Jako ćwiczenie pozwala wygenerować pierwsze 5 haseł. Będę pracował w trybie binarnym, aby ułatwić.
Pierwszy termin to 10
. Ponieważ 11
kolejna najmniejsza liczba ma tylko jeden właściwy podciąg, 1
który jest również podłańcuchem 10
, 11
nie ma go w sekwencji. 100
zawiera jednak odpowiednie podciągi, 00
które nie są podciągami, 10
więc 100
nasz następny termin. Dalej jest ten, 101
który zawiera unikalny właściwy podciąg 01
dodający go do sekwencji, a następnie 110
zawiera właściwy podciąg, 11
który jest nowy, dodając go do sekwencji.
Teraz mamy
10, 100, 101, 110
111
jest następny, ale zawiera tylko podciągi 1
i 11
dlatego nie jest terminem. 1000
zawiera jednak 000
dodanie go do sekwencji.
Oto kilka pierwszych wyrażeń dziesiętnych
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
Zadanie
Zarówno
Weź n jako dane wejściowe i wygeneruj n- ty termin w tej sekwencji (0 lub 1 indeksowany)
Ciągłe wyprowadzanie terminów sekwencji
To jest odpowiedź na golfa kodowanego w bajtach, przy czym mniej bajtów jest lepszych.
n
)?
a(36)
wynosi 47 (1 indeksowany).