Powiedzmy, że podciąg to dowolna ciągła sekcja oryginalnego łańcucha. Na przykład catjest podciąg concatenate. Powiemy, że poprawny podciąg to podciąg, który nie jest równy oryginalnemu ciągowi. Na przykład concatenatejest podciągiem, concatenateale 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ż 11kolejna najmniejsza liczba ma tylko jeden właściwy podciąg, 1który jest również podłańcuchem 10, 11nie ma go w sekwencji. 100zawiera jednak odpowiednie podciągi, 00które nie są podciągami, 10więc 100nasz następny termin. Dalej jest ten, 101który zawiera unikalny właściwy podciąg 01dodający go do sekwencji, a następnie 110zawiera właściwy podciąg, 11który jest nowy, dodając go do sekwencji.
Teraz mamy
10, 100, 101, 110
111jest następny, ale zawiera tylko podciągi 1i 11dlatego nie jest terminem. 1000zawiera jednak 000dodanie 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).