Rozpoczynając od łańcucha ABC
, rozważ wynik wielokrotnego dołączania do siebie ostatniej połowy siebie (użycie większej połowy, jeśli długość jest nieparzysta).
Otrzymujemy postęp:
ABC
ABCBC
ABCBCCBC
ABCBCCBCCCBC
ABCBCCBCCCBCBCCCBC
etc...
Niech S
reprezentuje wynikowy nieskończony ciąg (lub sekwencję), który powstaje, ponieważ ta procedura jest powtarzana na zawsze.
Cel
Celem tego wyzwania kodu jest znalezienie indeksu pierwszego wystąpienia uruchomień C
w S
.
Na początku jest to łatwe: C
najpierw pojawia się przy indeksie 2
, CC
o 4
, CCC
o 7
, CCCC
o 26
, ale CCCCC
cały czas o indeksie 27308
! Potem skończyła się moja pamięć.
Zwycięzcą zostanie zgłoszenie, które poprawnie generuje najwięcej uruchomionych indeksów (w kolejności, zaczynając od C
). Możesz użyć dowolnego algorytmu, ale wyjaśnij go, jeśli nie używasz podstawowej brutalnej siły. Dane wejściowe i wyjściowe mogą mieć dowolny łatwy do zrozumienia format.
Ważna uwaga: oficjalnie nie wiem, czy S
faktycznie zawiera wszystkie serie C
. To pytanie pochodzi od tego z Mathematics Stack Exchange , w którym autor również nie znalazł CCCCCC
. Jestem ciekawy, czy ktoś tu może. (To pytanie z kolei oparte jest na moim pierwotnym pytaniu na ten temat ).
Jeśli udowodnisz, że nie wszystkie serie C
występują S
, wygrasz automatycznie, ponieważ to pytanie nie będzie już ważne. Jeśli nikt nie może tego udowodnić ani znaleźć, CCCCCC
zwycięzcą zostanie osoba, która uzyska najwyższą dolną granicę indeksu CCCCCC
(lub cokolwiek, co będzie największym nierozstrzygniętym przebiegiem, jeśli CCCCCC
zostanie znaleziony).
Aktualizacja: Ogromne pochwały dla isaacga i res, którzy znaleźli CCCCCC
przy indeksie astronomicznym 2,124 * 10 ^ 519. W tym tempie nie wyobrażam sobie znalezienia CCCCCCC
jakiejkolwiek metody opartej na brutalnej sile. Dobra robota chłopaki!
CCCCC
przy indeksie 27308, ale później brzmi to tak, jakbyś nie wiedział, gdzie występuje po raz pierwszy. Miałeś na myśliCCCCCC
?