Tu amigo no es muy bueno con las computadoras, así que, como una broma práctica, alguien revolvió las letras (az) en su teclado. Cuando se sentó e intentó escribir su nombre mirando el teclado, se dio cuenta de que las letras estaban codificadas y le pidió ayuda.
Eres inteligente, así que sabes que si escribe su nombre y luego vuelve a escribir repetidamente lo que aparece en la pantalla en lugar de su nombre, eventualmente ingresará su nombre. También es amable y reorganiza las teclas, pero desea saber cuántos giros se necesitarían para tener éxito.
Su tarea es escribir un programa o función que, dada la combinación de las letras y el nombre del amigo, calcule el número de turnos.
Detalles de entrada:
- Se proporcionan dos cadenas como entrada en una estructura conveniente para su idioma.
- La primera cadena es la lista de las nuevas letras minúsculas en orden alfabético de las antiguas. (El primer carácter es el que está en la posición de
a, el último está en la posición dez). Siempre se producirá algún cambio en la cadena. - La segunda cadena es el nombre. Podría contener cualquier carácter ascii imprimible, pero solo los caracteres alfabéticos en mayúscula y minúscula se mezclarán si los hay. El nombre en sí podría no ser barajado en todos
Detalles de salida:
- La salida es un número entero, el número de vueltas mínimamente requerido. Newline es opcional.
Ejemplos:
Entrada:
'abcfdeghijklmnopqrstuvwxyz' 'Mr. John Doe'(d, e, f posiciones cambiadas)
Salida:
3(Los nombres que se muestran son: Mr. John Fod=> Mr. John Eof=> Mr. John Doe)
Entrada:
'nopqrstuvwxyzabcdefghijklm' 'Mr. John Doe'(el cifrado ROT13 )
Salida:
2(Cualquier nombre de entrada que contenga letras tomará 2rondas para producir el nombre original).
Entrada:
'aebcdjfghiqklmnopzrstuvwxy' 'John Doe'
Salida:
140
Este es el código de golf, por lo que gana la entrada más corta.
fuente

aebcdjfghiqklmnopzrstuvwxy(salida 1260 paraMr John Doe). Este es el máximo posible: consiste en ciclos de orden 4, 5, 7, 9 (y sin cambiosa), y cada nombre que contenga al menos una letra de cada ciclo producirá 1260. Y supongo que tomar el alfabeto como entrada o el uso de un nombre no afectado también son casos importantes.EOFes totalmente increíble.Respuestas:
Pyth, 16 bytes
Pruébalo aquí
La entrada debe darse en dos líneas, nombre y luego permutación. La permutación debe ser citada. El nombre puede ser citado o no citado. Por ejemplo:
Da 140.
Explicación:
fuente
CJam,
31 27 2524 bytesToma entrada en forma de:
es decir, primera línea - alfabetos, segunda línea - nombre.
Cómo funciona :
Pruébalo en línea aquí
fuente
Rubí, 58
Explicación
Enumerable#find(¡gracias @Ventero!) YString#tr!para reemplazar caracteres hasta que el reemplazadoStringcoincida con el nombre real.fuente
""+nes un poco más corto quen.dup, y puede guardar otro byte haciendo un uso creativo enEnumerable#findlugar de usar un contador explícito:(1..1e4).find{t.tr!(...)==n}n.downcase!).A-Zy+a.upcaseA-Z+a.upcaseyn.downcase!\ntienen la misma duración :)CJam,
3231 bytesPruébalo aquí. Toma la permutación en la primera línea y el nombre en la segunda línea de la entrada.
Explicación
fuente
Pyth 26
Pruébelo en línea aquí.
Hay bastantes consecuencias desafortunadas que le cuestan a este programa bytes, como tener que almacenar G en K para usarlo en la reducción, así como también tener que usar no (no (J)) para iniciar el filtro. Debido a esto, espero que todavía se pueda jugar golf.
Este es un programa que toma datos como:
(Tenga en cuenta la falta de comillas en el primer argumento)
Explicación que vendrá después de un agotamiento paralizante;)
fuente
Haskell 131 bytes
Llame
fcon la cadena de permutación y el nombre para obtener el resultado.Explicación
fuente
GolfScript (33 bytes)
Toma la entrada como dos cadenas entre comillas (simple o doble) separadas por cualquier cantidad de espacio en blanco; p.ej
Demostración en línea
Disección
La transliteración se basa en el hecho de que todos los caracteres están afectados (es
{'ABC'?'abc'=}%con elA$reemplazo de la cadena ordenada'ABC'y elAreemplazo de la permutación'abc'); Las alternativas más generales no ahorran lo suficiente porque el filtro de caracteres alfabéticos es muy barato.Esto también se basa en
-1$acceder al fondo de la pila, que es un truco GS relativamente raro.fuente