Nazwijmy niepustą listę ciągów mesą, jeśli spełnione są następujące warunki:
- Każdy wymieniony ciąg jest niepusty i używa tylko znaków występujących w pierwszym ciągu.
- Każdy kolejny ciąg znaków ma dokładnie jeden znak dłuższy niż poprzedni ciąg.
- Żaden ciąg na liście nie jest podciągiem żadnego innego ciągu na liście.
Termin „mesa” pochodzi od takiej wizualizacji (gdzie xs mają być różnymi znakami):
xx..x
xx..xx
xx..xxx
.
.
.
xx..xxx..x
NB: Jest to matematyczny fakt, że tylko skończona liczba mes zaczyna się od danego łańcucha. Należy zwrócić uwagę na rozróżnienie między podciąg vs. fragmentu ; np. „anna” jest podsekwencją (ale nie podciągiem) „banana”.
Wyzwanie:
- Napisz najkrótszy program, który pobiera dowolny niepusty pusty alfanumeryczny ciąg wejściowy i wyświetla liczbę mes, które zaczynają się od tego ciągu.
Wejście (standardowe wejście):
- Dowolny niepusty ciąg alfanumeryczny.
Wyjście (standardowe wyjście):
- Liczba mes, które zaczynają się od ciągu wejściowego.
Punktacja:
- Zwycięzcą jest program z najmniejszą liczbą bajtów.
Przykładowe mesa
Tylko jedna mesa zaczyna się od a:
a
Tylko jedna mesa zaczyna się od aa:
aa
Wiele mes zaczyna się od ab:
ab ab ab ab (and so on)
baa aaa bbb
bbba bbaa
baaaa
aaaaaa
ab, ab/baa, ab/bbb, ab/bbb/bbaa, ab/bbb/bbaa/baaaa, ab/bbb/bbaa/baaaa/aaaaaasą różne płaskowyże.
ab,bbbjako mesa, po prostu zatrzymać się na drugim semestrze. Czy to jest ważne? Czy zawsze muszą być wykonane tak długo, jak to możliwe? Ponadto, jeśli istnieje wiele możliwych rearanżacji wnthperspektywie (takie jakbaa,aba,aab), czy słupkiem jako odrębne płaskowyże, jak również (pod warunkiem oczywiście, że wszyscy przestrzegają zasad)?