Il tuo amico non è troppo bravo con i computer, quindi per scherzo qualcuno ha scritto le lettere (az) sulla tastiera. Quando si sedette e provò a digitare il suo nome guardando la tastiera, si rese conto che le lettere erano confuse e chiese il tuo aiuto.
Sei intelligente, quindi sai che se digita il suo nome e quindi reinserisce ripetutamente ciò che appare sullo schermo invece del suo nome, alla fine riuscirà a inserire il suo nome. Sei anche gentile e riorganizza i tasti ma vuoi sapere quante svolte ci vorrebbero per avere successo.
Il tuo compito è quello di scrivere un programma o una funzione che abbia dato il mescolamento delle lettere e il nome dell'amico calcola il numero di turni.
Dettagli di input:
- Vengono fornite due stringhe come input in una struttura conveniente per la tua lingua.
- La prima stringa è l'elenco delle nuove lettere minuscole in ordine alfabetico di quelle vecchie. (Il primo carattere è quello che si trova nella posizione di
a
, l'ultimo è nella posizione diz
.) Alcuni cambiamenti si verificano sempre nella stringa. - La seconda stringa è il nome. Potrebbe contenere qualsiasi carattere ASCII stampabile, ma solo i caratteri alfabetici maiuscoli e minuscoli verranno mescolati, se presenti. Il nome stesso potrebbe non essere mischiato ad al.
Dettagli di uscita:
- L'output è un singolo numero intero il numero di giri minimo richiesto. Newline è facoltativo.
Esempi:
Input:
'abcfdeghijklmnopqrstuvwxyz' 'Mr. John Doe'
(posizioni d, e, f modificate)
Output:
3
(I nomi visualizzati sono: Mr. John Fod
=> Mr. John Eof
=> Mr. John Doe
)
Input:
'nopqrstuvwxyzabcdefghijklm' 'Mr. John Doe'
(la cifra ROT13 )
Output:
2
(Qualsiasi nome di input che contiene lettere richiederà dei 2
round per produrre il nome originale.)
Ingresso:
'aebcdjfghiqklmnopzrstuvwxy' 'John Doe'
Produzione:
140
Questo è code-golf, quindi vince l'ingresso più breve.
EOF
è assolutamente incredibile!
aebcdjfghiqklmnopzrstuvwxy
(output 1260 perMr John Doe
). Questo è il massimo possibile - è costituito da cicli di ordine 4, 5, 7, 9 (e invariatoa
), e ogni nome che contiene almeno una lettera di ciascun ciclo produrrà 1260. E immagino che prendere l'alfabeto stesso come input o l'utilizzo di un nome non interessato sono anche importanti casi limite.