Twój przyjaciel nie jest zbyt dobry w korzystaniu z komputerów, więc praktycznym żartem ktoś wymieszał litery (az) na klawiaturze. Kiedy usiadł i próbował wpisać swoje imię, patrząc na klawiaturę, zdał sobie sprawę, że litery są zakodowane i poprosił o pomoc.
Jesteś sprytny, więc wiesz, że jeśli wpisze swoje imię, a następnie wielokrotnie przepisuje to, co pojawia się na ekranie zamiast swojego imienia, w końcu uda mu się wprowadzić jego imię. Jesteś także uprzejmy i przestawiasz klucze, ale chcesz wiedzieć, ile tur potrzeba, by odnieść sukces.
Twoim zadaniem jest napisanie programu lub funkcji, która tasuje litery, a imię znajomego oblicza liczbę zwojów.
Dane wejściowe:
- Dwa ciągi podano jako dane wejściowe w strukturze dogodnej dla twojego języka.
- Pierwszy ciąg to lista nowych małych liter w kolejności alfabetycznej starych. (Pierwszy znak to ten, który jest w pozycji
a
, ostatni jest w pozycjiz
.) Pewna zmiana zawsze nastąpi w ciągu. - Drugi ciąg to nazwa. Może zawierać dowolny znak ascii do wydrukowania, ale tylko wielkie i małe litery alfabetu będą tasowane, jeśli występują. Sama nazwa może nie zostać przetasowana przy al.
Dane wyjściowe:
- Wyjście to jedna liczba całkowita, minimalnie wymagana liczba zwojów. Newline jest opcjonalny.
Przykłady:
Dane wejściowe:
'abcfdeghijklmnopqrstuvwxyz' 'Mr. John Doe'
(zmieniono pozycje d, e, f)
Dane wyjściowe:
3
(Pokazane nazwy to: Mr. John Fod
=> Mr. John Eof
=> Mr. John Doe
)
Wejście:
'nopqrstuvwxyzabcdefghijklm' 'Mr. John Doe'
( szyfr ROT13 )
Dane wyjściowe:
2
(Każda nazwa wejściowa zawierająca litery zajmie 2
rundy, aby uzyskać oryginalną nazwę).
Wejście:
'aebcdjfghiqklmnopzrstuvwxy' 'John Doe'
Wynik:
140
To jest golf golfowy, więc wygrywa najkrótszy wpis.
EOF
jest całkowicie niesamowity!
aebcdjfghiqklmnopzrstuvwxy
(wyjście 1260 dlaMr John Doe
). Jest to maksimum możliwe - składa się z cykli rzędu 4, 5, 7, 9 (i niezmienionycha
), a każda nazwa zawierająca co najmniej jedną literę z każdego cyklu da 1260. I wydaje mi się, że biorąc sam alfabet jako dane wejściowe lub używanie niezmienionej nazwy są również ważnymi przypadkami krawędzi.