ENTRADA: Cualquier cadena que consiste exclusivamente en letras minúsculas a través del argumento de función, argumento de línea de comando, STDIN o similar.
SALIDA: Imprima o devuelva un número que representará la suma de las distancias de las letras de acuerdo con la siguiente métrica:
Toma la primera y la segunda letra y cuenta la distancia entre ellas. La distancia está definida por el diseño del teclado QWERTY, donde cada letra adyacente en la misma fila tiene distancia 1 y cada letra adyacente en la misma columna tiene distancia 2. Para medir la distancia entre letras que no son adyacentes, tome la ruta más corta entre los dos.
Ejemplos:
q->w is 1 distance apart
q->e is 2 distance
q->a is 2 distance
q->s is 3 distance (q->a->s or q->w->s)
q->m is 10 distance
Luego toma la segunda y la tercera letra, luego la tercera y la cuarta, etc., hasta llegar al final de la entrada. La salida es la suma de todas esas distancias.
Ejemplo de entrada y salida:
INPUT: qwer
OUTPUT: 3
INPUT: qsx
OUTPUT: 5
INPUT: qmq
OUTPUT: 20
INPUT: tttt
OUTPUT: 0
Aquí hay una imagen que muestra qué letras están en la misma columna:
Este es el código de golf, por lo que gana el código más corto en bytes.
Respuestas:
CJam, 50 bytes
Tenga en cuenta que el código contiene caracteres no imprimibles.
Pruébelo en línea en el intérprete de CJam . Si el enlace permanente no funciona, copie el código de esta pasta .
Antecedentes
Comenzamos a asignar las posiciones 0 a 9 a las letras en la fila superior, 10 a 18 a las letras en la fila de inicio y 20 a 26 a las letras en la fila inferior.
Las posiciones de las 26 letras, en orden alfabético, son
Esta es una matriz de longitud 26. Dado que las matrices se envuelven en CJam, y el punto de código de la letra h es 104 = 4 × 26 , rotamos la matriz 7 unidades hacia la izquierda, de modo que se pueda acceder a la posición de cada letra punto de código
Ahora codificamos esta matriz considerando sus dígitos de elementos de un número base 27 y convertimos el entero resultante en base 257.
Al reemplazar cada número entero por el carácter Unicode correspondiente, obtenemos la cadena del código fuente.
Cómo funciona
fuente
Python 2,
220...124119 BytesMuchas gracias a Sp3000 por guardar muchos bytes.
Uso:
Compruébalo aquí.
Ligeramente no golfista + explicación:
fuente
Java, 266 bytes
Versión sin golf:
fuente
int v=0,l=q.length(),p[][]=new int[l][2];
SWI-prolog, 162 bytes
Ejemplo:
a(`qmq`)
salidas20
(ytrue
después, pero no hay nada que pueda hacer al respecto).Editar: tuvo que usar 3 bytes más. Mi programa original pasó los casos de prueba dados pero en realidad era incorrecto (los valores absolutos estaban fuera de lugar / faltantes)
Nota: si desea usarlo en, por ejemplo , Ideone , debe reemplazar todas las comillas inversas
`
por comillas dobles"
. Las comillas inversas en mi caso (que es el estándar actual en SWI-Prolog) representan una lista de códigos para cadenas y comillas dobles, pero esto es diferente en versiones anteriores de SWI-Prolog.fuente