INPUT: Toute chaîne composée exclusivement de lettres minuscules via un argument de fonction, un argument de ligne de commande, STDIN ou similaire.
SORTIE: Imprimez ou renvoyez un nombre qui représentera la somme des distances des lettres selon la métrique suivante:
Vous prenez la première et la deuxième lettre et comptez la distance entre elles. La distance est définie par la disposition du clavier QWERTY, où chaque lettre adjacente dans la même ligne a la distance 1 et chaque lettre adjacente dans la même colonne a la distance 2. Pour mesurer la distance entre les lettres qui ne sont pas adjacentes, vous prenez le chemin le plus court entre les deux.
Exemples:
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
Ensuite, vous prenez la deuxième et la troisième lettre, puis la troisième et la quatrième, etc., jusqu'à la fin de l'entrée. La sortie est la somme de toutes ces distances.
Exemple d'entrée et de sortie:
INPUT: qwer
OUTPUT: 3
INPUT: qsx
OUTPUT: 5
INPUT: qmq
OUTPUT: 20
INPUT: tttt
OUTPUT: 0
Voici une image montrant quelles lettres sont dans la même colonne:
C'est le golf de code, donc le code le plus court en octets gagne!
Réponses:
CJam, 50 octets
Notez que le code contient des caractères non imprimables.
Essayez-le en ligne dans l' interpréteur CJam . Si le permalien ne fonctionne pas, copiez le code de cette pâte .
Contexte
Nous commençons à attribuer les positions 0 à 9 aux lettres de la ligne supérieure, 10 à 18 aux lettres de la ligne d'accueil et 20 à 26 aux lettres de la ligne inférieure.
Les positions des 26 lettres, par ordre alphabétique, sont
Il s'agit d'un tableau de longueur 26. Étant donné que les tableaux s'enroulent dans CJam et que le point de code de la lettre h est 104 = 4 × 26 , nous faisons pivoter le tableau de 7 unités vers la gauche, afin que la position de chaque lettre soit accessible par son point de code.
Maintenant, nous codons ce tableau en considérant ses chiffres d'éléments d'un nombre de base 27 et convertissons l'entier résultant en base 257.
En remplaçant chaque entier par le caractère Unicode correspondant, nous obtenons la chaîne du code source.
Comment ça fonctionne
la source
Python 2,
220...124119 OctetsUn grand merci à Sp3000 pour avoir économisé beaucoup d'octets.
Usage:
Vérifiez le ici.
Légèrement non golfé + explication:
la source
Java, 266 octets
Version non golfée:
la source
int v=0,l=q.length(),p[][]=new int[l][2];
SWI-prolog, 162 octets
Exemple:
a(`qmq`)
sorties20
(Ettrue
après, mais je ne peux rien y faire).Edit: a dû utiliser 3 octets de plus. Mon programme d'origine a réussi les cas de test donnés mais était en fait incorrect (les valeurs absolues étaient mal placées / manquantes)
Remarque: si vous voulez l'utiliser sur disons Ideone , vous devez remplacer tous les backquotes
`
par des guillemets doubles"
. Les guillemets dans mon cas (qui est la norme actuelle dans SWI-Prolog) représentent la liste des codes pour les chaînes et les guillemets doubles, mais cela est différent dans les anciennes versions de SWI-Prolog.la source