Bei folgender Eingabe:
- Eine ganze Zahl
n
won > 0
. - Eine Zeichenfolge,
s
bei ders
es sich nicht um eine leere Zeichenfolge handelts~=[0-9A-Z]+
(nur alphanumerische Großbuchstaben).
Verwendung einer standardmäßigen, vereinfachten QWERTZ-Tastatur (wie unten gezeigt):
1234567890
QWERTYUIOP
ASDFGHJKL
ZXCVBNM
Führen Sie den folgenden Vorgang aus:
- Suchen Sie die ursprüngliche Zeile, in der sich jedes Zeichen auf der Tastatur befindet.
- Ersetzen Sie den Buchstaben durch das korrekte verschobene Äquivalent für
n
basierend auf seiner ursprünglichen Position + n.- EG
s="AB"
undn=2
:A
würde werdenD
undB
würde werdenM
.
- EG
- Wenn
keyboard_row[position + n] > keyboard_row.length
ja, kehren Sie zum Start zurück.- EG
s="0P"
undn=2
:0
würde werden2
undP
würde werdenW
.
- EG
Beispiele:
f("0PLM",1) = 1QAZ
f("ZXCVB",2) = CVBNM
f("HELLO",3) = LYDDW
f("0PLM",11) = 1QSV
f("0PLM",2130) = 0PHX
Regeln
- Dies ist Code-Golf , die niedrigste Anzahl an Bytes gewinnt.
Das ist etwas schwieriger als es auf den ersten Blick scheint.
Antworten:
Jelly , 13 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Python 2 , 110 Bytes
Probieren Sie es online!
Dies verwendet eine ausreichend große Zeichenfolge (99 Kopien jeder Zeile) und die LCM zwischen den Zeilenlängen (630), um die richtige Ersetzung zu finden und eine individuelle Korrektur zwischen den einzelnen Zeilen zu vermeiden.
quelle
Java 8,
159158 Bytes-1 Byte dank @ OlivierGrégoire, der das Eingabe-Array modifiziert, anstatt direkt zu drucken.
Erläuterung:
Probieren Sie es online aus.
quelle
char[]
.Retina , 49 Bytes
Probieren Sie es online! Nimmt Eingaben
n
unds
in separaten Zeilen vor. Erläuterung:Wiederhole das
n
mal.Verschieben Sie alle Zeichen eine Taste nach rechts.
Löschen
n
.quelle
JavaScript (ES6),
101 bis99 ByteÜbernimmt Eingaben in der Currying-Syntax
(s)(n)
. Funktioniert mit Arrays von Zeichen.Testfälle
Code-Snippet anzeigen
Wie?
Wir suchen die Position p jedes Zeichens der Eingabe innerhalb eines Strings S, in dem die Tastaturzeilen verschachtelt sind: Die ersten 4 Zeichen sind '1QAZ' (erste Spalte der Tastatur), die nächsten 4 Zeichen sind '2WSX' (zweite Spalte) der Tastatur) und so weiter. Nicht verwendete Positionen werden mit Unterstrichen aufgefüllt und die letzten werden einfach verworfen.
Dies ermöglicht es uns, die Zeile einfach mit p mod 4 zu identifizieren und macht explizite Trennzeichen zwischen den Zeilen überflüssig.
Wir rücken um 4n Positionen vor, wenden das richtige Modulo für diese Zeile an (40, 40, 36 und 28) und wählen das Ersetzungszeichen aus, das an dieser neuen Position in S gefunden wurde .
quelle
Jelly , 18 Bytes
Probieren Sie es online!
quelle
C,
152, 149 BytesVielen Dank an @gastropner für das Speichern von drei Bytes!
Probieren Sie es online!
Abgerollt:
quelle
for(j=l;j--;)
aber ich weiß nicht warum, ohne dass eine andere geändert wird. Dennoch sollten Sie auf 149 bekommen.Rot , 152 Bytes
Probieren Sie es online!
Ungolfed:
quelle
Haskell , 99 Bytes
Probieren Sie es online!
quelle
s#n= ...
anstellef(s,n)= ...
dessen nur eine Beispielnotation verwenden, die für die Beispiele verwendet wird.Perl 5 , 94 + 1 (
-p
) = 95 BytesProbieren Sie es online!
quelle
Japt, 20 Bytes
Ich renne aus der Tür zum Abendessen, um mehr Golf zu spielen und eine Erklärung zu folgen.
Versuch es
quelle
Perl,
59585756 BytesEnthält
+
für-p
Geben Sie STDIN als 2 Zeilen ein, zuerst die Zeichenfolge, dann die Wiederholung
quelle
Perl 5 , 85 Bytes
84 Byte Code + 1 für
-p
.Probieren Sie es online!
quelle
Sauber ,
144119 BytesProbieren Sie es online!
Lambda-Funktion mit der Signatur
Int ![Char] -> [Char]
quelle
Ruby , 101 Bytes
Probieren Sie es online!
Ich bin ehrlich gesagt ein wenig enttäuscht, dass ich mit "klügeren" Methoden nicht besser abschneiden kann. Das nächste, was ich bekam, war nach dem Vorbild von
für einen Nettogewinn von 7 Zeichen.
quelle