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.
źródło
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.EOF
jest całkowicie niesamowity!Odpowiedzi:
Pyth, 16 bajtów
Wypróbuj tutaj.
Dane wejściowe należy podać w dwóch wierszach, nazwę, a następnie permutację. Należy podać permutację. Imię może być cytowane lub nie cytowane. Na przykład:
Daje 140.
Wyjaśnienie:
źródło
CJam,
31 27 2524 bajtówPobiera dane wejściowe w postaci:
tzn. pierwsza linia - alfabety, druga linia - nazwa.
Jak to działa :
Wypróbuj online tutaj
źródło
Ruby, 58
Wyjaśnienie
Enumerable#find
(dzięki @Ventero!) IString#tr!
zamień znaki, aż zastąpioneString
pasują do prawdziwego imienia.źródło
""+n
jest nieco krótszy niżn.dup
i możesz zaoszczędzić kolejny bajt, twórczo wykorzystującEnumerable#find
zamiast jawnego licznika:(1..1e4).find{t.tr!(...)==n}
n.downcase!
).A-Z
i+a.upcase
A-Z+a.upcase
in.downcase!\n
mają tę samą długość :)CJam,
3231 bajtówSprawdź to tutaj. Wymaga permutacji w pierwszym wierszu, a nazwa w drugim wierszu wejścia.
Wyjaśnienie
źródło
Pyth 26
Wypróbuj online tutaj.
Istnieje wiele niefortunnych konsekwencji, które kosztują ten bajt programu, takich jak konieczność przechowywania G w K, aby użyć go w redukcji, a także konieczność używania nie (nie (J)), aby uruchomić filtr. Z tego powodu oczekuję, że nadal można grać w golfa.
Jest to program, który pobiera dane wejściowe takie jak:
(Zwróć uwagę na brak cytatów w pierwszym argumencie)
Wyjaśnienie, które nastąpi po okaleczającym wyczerpaniu;)
źródło
Haskell 131 bajtów
Wywołaj
f
ciąg permutacyjny i nazwę, aby uzyskać wynikWyjaśnienie
źródło
GolfScript (33 bajty)
Pobiera dane wejściowe jako dwa (jedno- lub podwójnie) ciągi cytowane oddzielone dowolną ilością białych znaków; na przykład
Demo online
Sekcja
Transliteracja polega na tym, że dotyczy to wszystkich znaków ( zastępuje
{'ABC'?'abc'=}%
to posortowany ciąg znakówA$
'ABC'
iA
zastępowania permutacji'abc'
); bardziej ogólne alternatywy nie oszczędzają wystarczająco dużo, ponieważ filtr do znaków alfabetycznych jest tak tani.To również zależy od
-1$
dostępu do dolnej części stosu, co jest stosunkowo rzadką sztuczką GS.źródło