Étant donné l'entrée suivante:
- Un entier
n
oùn > 0
. - Une chaîne
s
oùs
n'est pas vide ets~=[0-9A-Z]+
(majuscules alphanumériques uniquement).
À l'aide d'un clavier QWERTY standard simplifié (comme illustré ci-dessous):
1234567890
QWERTYUIOP
ASDFGHJKL
ZXCVBNM
Effectuez l'opération suivante:
- Recherchez la ligne d'origine de chaque caractère sur le clavier.
- Remplacez la lettre par l'équivalent décalé correct pour en
n
fonction de sa position d'origine + n.- EG
s="AB"
etn=2
:A
deviendraientD
etB
deviendraientM
.
- EG
- Si
keyboard_row[position + n] > keyboard_row.length
, revenez au début.- EG
s="0P"
etn=2
:0
deviendraient2
etP
deviendraientW
.
- EG
Exemples:
f("0PLM",1) = 1QAZ
f("ZXCVB",2) = CVBNM
f("HELLO",3) = LYDDW
f("0PLM",11) = 1QSV
f("0PLM",2130) = 0PHX
Règles
- Il s'agit du code-golf , le plus petit nombre de victoires d'octets.
C'est un peu plus difficile qu'il n'y paraît à première vue.
Réponses:
Gelée , 13 octets
Essayez-le en ligne!
Comment ça marche
la source
Python 2 , 110 octets
Essayez-le en ligne!
Cela utilise une chaîne suffisamment grande (99 copies de chaque ligne) et le LCM entre les longueurs de lignes (630) pour trouver la substitution correcte en évitant une correction individuelle entre chaque ligne.
la source
Java 8,
159158 octets-1 octet grâce à @ OlivierGrégoire modifiant le tableau d'entrée au lieu d'imprimer directement.
Explication:
Essayez-le en ligne.
la source
char[]
.Rétine , 49 octets
Essayez-le en ligne! Prend entrée
n
ets
sur des lignes séparées. Explication:Répétez
n
fois.Déplacez tous les caractères d'une touche vers la droite.
Supprimer
n
.la source
JavaScript (ES6),
10199 octetsPrend une entrée dans la syntaxe de curry
(s)(n)
. Fonctionne avec des tableaux de caractères.Cas de test
Afficher l'extrait de code
Comment?
Nous recherchons la position p de chaque caractère de l'entrée dans une chaîne S où les lignes du clavier sont entrelacées: les 4 premiers caractères sont '1QAZ' (première colonne du clavier), les 4 caractères suivants sont '2WSX' (deuxième colonne du clavier) et ainsi de suite. Les positions inutilisées sont rembourrées avec des traits de soulignement et les dernières sont simplement jetées.
Cela nous permet d'identifier facilement la ligne avec p mod 4 et élimine le besoin de séparateurs explicites entre les lignes.
On avance par 4n positions, appliquer le bon modulo pour cette ligne (40, 40, 36 et 28 respectivement) et choisir le caractère de remplacement trouvé à cette nouvelle position dans S .
la source
Gelée , 18 octets
Essayez-le en ligne!
la source
C,
152149 octetsMerci à @gastropner pour avoir économisé trois octets!
Essayez-le en ligne!
Déroulé:
la source
for(j=l;j--;)
mais je ne sais pas pourquoi sans autre changement.Rouge , 152 octets
Essayez-le en ligne!
Non golfé:
la source
Haskell , 99 octets
Essayez-le en ligne!
la source
s#n= ...
place def(s,n)= ...
ce qui n'est qu'une notation d'exemple utilisée pour les exemples.Perl 5 , 94 + 1 (
-p
) = 95 octetsEssayez-le en ligne!
la source
Japt, 20 octets
Courir par la porte pour dîner donc plus de golf et une explication à suivre.
Essayez-le
la source
Perl,
59585756 octetsComprend
+
pour-p
Donnez une entrée sur STDIN sur 2 lignes, d'abord la chaîne, puis la répétition
la source
Perl 5 , 85 octets
Code de 84 octets + 1 pour
-p
.Essayez-le en ligne!
la source
Nettoyer ,
144119 octetsEssayez-le en ligne!
Fonction Lambda avec la signature
Int ![Char] -> [Char]
la source
Rubis , 101 octets
Essayez-le en ligne!
Je suis honnêtement un peu déçu de ne pas pouvoir faire mieux avec des méthodes «plus intelligentes». Le plus proche que j'ai obtenu était
pour un gain net de 7 caractères.
la source