Okresy lokalne
Weź niepusty ciąg s . Lokalny okres od s o indeksie i jest najmniejszym dodatnia n takie, że dla każdego 0 ≤ k <n , mamy s [I + K] = s [n + i, k] , gdy obie strony są określone. Alternatywnie, jest to minimalna długość łańcucha niepusty wag taki sposób, że gdy powiązanie WW znajduje się obok s tak, że druga kopia w rozpoczyna się wskaźnika i w s , a następnie dwa ciągi zgadzają gdzie zachodzą one na siebie.
Jako przykład, obliczmy lokalny okres s = "abaabbab" przy (0) indeksie 2.
- Spróbuj n = 1 : następnie s [2 + 0] ≠ s [2-1 + 0] , więc ten wybór jest nieprawidłowy.
- Spróbuj n = 2 : następnie s [2 + 0] = s [2-2 + 0] ale s [2 + 1] ≠ s [2-2 + 1] , więc to również nie jest poprawne.
- Próby n = 3 : I y [2 + 0-3] nie jest zdefiniowana, S [2 + 1] = s [3/2 + 1] i S [2 + 2] = s [2-3 + 2] . Tak więc okres lokalny wynosi 3.
Oto wizualizacja okresów lokalnych z wykorzystaniem drugiej definicji, z średnikami dodanymi pomiędzy dwiema kopiami w dla jasności:
index a b a a b b a b period
0 a;a 1
1 b a;b a 2
2 a a b;a a b 3
3 a;a 1
4 b b a b a a;b b a b a a 6
5 b;b 1
6 a b b;a b b 3
7 b a;b a 2
Zauważ, że w niekoniecznie jest podciągiem s . Dzieje się tak tutaj w przypadku indeksu-4.
Zadanie
Twój wkład jest niepusty ciąg s z małych znaków ASCII. W razie potrzeby można go traktować jako listę znaków. Twój wynik powinien być listą zawierającą lokalny okres s dla każdego z jego wskaźników. W powyższym przykładzie poprawny wynik wyniósłby [1,2,3,1,6,1,3,2] .
Najniższa liczba bajtów w każdym języku wygrywa. Obowiązują standardowe zasady gry w golfa .
Przypadki testowe
a -> [1]
hi -> [1, 2]
www -> [1, 1, 1]
xcxccxc -> [1, 2, 2, 5, 1, 3, 2]
abcbacb -> [1, 4, 7, 7, 7, 3, 3]
nininini -> [1, 2, 2, 2, 2, 2, 2, 2]
abaabbab -> [1, 2, 3, 1, 6, 1, 3, 2]
woppwoppw -> [1, 4, 4, 1, 4, 4, 4, 1, 4]
qwertyuiop -> [1, 10, 10, 10, 10, 10, 10, 10, 10, 10]
deededeededede -> [1, 3, 1, 5, 2, 2, 5, 1, 12, 2, 2, 2, 2, 2]
abababcabababcababcabababcaba -> [1, 2, 2, 2, 2, 7, 7, 7, 7, 2, 2, 2, 19, 19, 5, 5, 2, 5, 5, 12, 12, 2, 2, 2, 7, 7, 5, 5, 2]
;jest to w twoim przykładzie). Pozbyłoby się to czołowej 1.
qwertyuiop, w będzie obrócony wersjęqwertyuiop. Zobacz także przykład o indeksie 4: w niekoniecznie jest podciągiem s .