Seu amigo não é muito bom com computadores, então, como uma piada prática, alguém embaralhou as letras (az) em seu teclado. Quando ele se sentou e tentou digitar seu nome olhando para o teclado, percebeu que as letras estavam embaralhadas e pediu sua ajuda.
Você é esperto e sabe que, se ele digitar seu nome e digitar repetidamente o que aparece na tela, em vez de seu nome, ele poderá digitar seu nome eventualmente. Você também é gentil e reorganiza as teclas, mas quer saber quantas voltas seriam necessárias para ter sucesso.
Sua tarefa é escrever um programa ou função que, dada a ordem aleatória das letras e o nome do amigo, calcule o número de turnos.
Detalhes da entrada:
- Duas cordas são fornecidas como entrada em uma estrutura conveniente para o seu idioma.
- A primeira string é a lista das novas letras minúsculas em ordem alfabética das antigas. (O primeiro caractere é aquele que está na posição de
a
, o último está na posição dez
.) Alguma mudança sempre ocorrerá na string. - A segunda string é o nome. Ele pode conter qualquer caractere ascii imprimível, mas apenas os caracteres alfabéticos maiúsculos e minúsculos serão embaralhados, se houver. O nome em si pode não ser embaralhado.
Detalhes da saída:
- A saída é um único número inteiro o número de voltas minimamente necessário. Nova linha é opcional.
Exemplos:
Entrada:
'abcfdeghijklmnopqrstuvwxyz' 'Mr. John Doe'
(posições d, e, f alteradas)
Saída:
3
(Os nomes mostrados são: Mr. John Fod
=> Mr. John Eof
=> Mr. John Doe
)
Entrada:
'nopqrstuvwxyzabcdefghijklm' 'Mr. John Doe'
(a cifra ROT13 )
Saída:
2
(Qualquer nome de entrada que contenha letras será 2
arredondado para produzir o nome original.)
Entrada:
'aebcdjfghiqklmnopzrstuvwxy' 'John Doe'
Resultado:
140
Este é o código-golfe, portanto a entrada mais curta vence.
EOF
é totalmente incrível!
aebcdjfghiqklmnopzrstuvwxy
(saída 1260 paraMr John Doe
). Esse é o máximo possível - consiste em ciclos de ordem 4, 5, 7, 9 (e um inalteradoa
), e todo nome que contém pelo menos uma letra de cada ciclo gera 1260. E eu acho que pegar o próprio alfabeto como entrada ou usar um nome não afetado também são casos importantes.