Code Golf Challenge
Ich habe einen Fehler, meine Finger sind fett und ich habe häufig einen Fehler, der darin besteht, eine Taste rechts auf meinem Kryboard zu drücken.
Ich fürchte, die Situation wird mit der Zeit schlechter und schlechter.
Sopn jede Taste, die ich mache, wird; nach rechts schieben!
Vor dem Start möchte ich, dass ein Programm (oder eine Funktion) automatisch jede Tastatureingabe wieder nach links verschiebt.
Ich stelle sicher, dass ich den Rest der Zeit mit meinem Band tippe, um keine Verwirrung zu stiften!
Zielsetzung:
Schreiben Sie ein Programm oder eine Funktion, die eine der folgenden grünen Tasten auf einer Standard-QWERTZ-Tastatur verwendet und das Zeichen der Taste links davon zurückgibt.
Bedingungen:
• Sie können davon ausgehen, dass die Person, die dieses Programm ausführt, eine QWERTZ-Tastatur wie die oben abgebildete verwendet.
• Bei Eingabe und Ausgabe wird die Groß- und Kleinschreibung nicht berücksichtigt. Sie können für diese Herausforderung jeden beliebigen Fall (oder eine Mischung aus Fallkombinationen) verwenden und auf Wunsch auch davon ausgehen, dass alle Eingaben in einem Fall erfolgen.
• Wenn Ihre Sprache es aus irgendeinem Grund nicht zulässt, dass ein Benutzer die Eingabetaste eingibt, können Sie diesen einen Tastenanschlag ignorieren
• Diese Abfrage gilt nur für die Standardwerte der Tasten. Wenn 4
Sie beispielsweise die Taste drücken, können Sie davon ausgehen, dass dies immer 4
und niemals der Fall ist$
• Sie können davon ausgehen, dass immer nur die grünen Tasten gedrückt werden.
Beispiel Input
-> Output
:
S
-> a
4
-> 3
=
-> -
[
->p
Das ist Code-Golf , also gewinnt das Programm mit dem kürzesten bytecount!
]
->[
?Antworten:
Ruby,
76 7169 Bytesquelle
Perl 6 ,
878369 BytesProbieren Sie es online!
Ich frage mich, ob es eine Möglichkeit gibt, diese fest codierte Zeichenfolge in eine kürzere zu codieren.
(Hat GBs Regex-Idee für -14 Bytes gestohlen .)
quelle
$"
könnten wir mit den Reichweiten ein paar Zeichen sparenJelly ,
3433 BytesProbieren Sie es online!
Wie es funktioniert
quelle
Øq
flott! Ich mag das, danke!Python 3,
85 bis78 Bytes:quelle
lambda x,k="1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm<>?":k[k.find(x)-1]
um einige Bytes zu reduzierenPython , 76 Bytes
Probieren Sie es online!
Erstellt ein Wörterbuch, in dem jede Taste mit der verschobenen Version der Zeichenfolge nach links verschoben wird. Die unterste Zeile ist die Funktion, die oberste ist eine Definition.
Das
translate
Erstellen eines Mappings ergab eine längere Lösung. Probieren Sie es online!quelle
Retina ,
5351 BytesProbieren Sie es online!
Eine einfache Transliteration, die jedes Zeichen um eine Position nach hinten verschiebt. Alles von
1
bis/
ist der ursprüngliche Zeichensatz, während der folgende Teil der neue Satz ist, mito
dem der andere Satz angegeben wird.H
undL
sind spezielle Zeichenklassen für die Transliteration in der Retina (bzw. Zuordnung zu Hexadezimalziffern und Großbuchstaben), aber glücklicherweise treten sie auf der Tastatur innerhalb von alphabetisch geordneten Sequenzen (FGH
undJKL
) auf 2 Bytes.quelle
C ++, 109 Bytes
Probieren Sie es online!
quelle
TI-Basic, 70 Bytes
Ich bezweifle, dass es kürzer werden könnte ...
PS Das Zwei-Byte - Tokens sind
Str1
,`
,\
,sub(
, undinString(
.quelle
V ,
575451 Bytes3 Bytes gespart dank @ nmjcman101 für die Verwendung
hxVp
anstelle dessen, was ich für die Mehrzeilentastatur hatteProbieren Sie es online!
<esc>
ist0x1b
und<c-r>
ist0x12
Hinweis: Dies unterstützt die Eingabetaste nicht
Enthält nicht druckbare Dateien. Hier ist der Hexdump
Erläuterung
Der größte Teil des Programms generiert die Tastatur.
i
wechselt in den Einfügemodus und jedes darauf folgende Zeichen wird in den Puffer geschrieben. Aber hier gibt es eine kleine¬19
Eigenart , fügt Zeichen zwischen 1 und 9 ein.Das Programm verlässt den Einfügemodus am
<esc>
. Und dann/<c-r>a
sucht es hier nach dem Argument im Puffer. Dies bringt den Cursor über das gefundene Zeichen.quelle
hylHVGp
Sie können tun, was @DJMcMayhem in der Motorradfrage wie getan hathxVp
. Ich bin mir nicht sicher, warum du das daG
reingest, ist das nicht alles eine Zeile? AuchdhVp
funktionieren würde.G
seit wann die Tastatur mehrzeilig war. Vielen Dank!PowerShell, 82 Byte
Die Eingabetaste wird unterstützt, kann jedoch nicht getestet werden,
Read-Host
da das Drücken der Eingabetaste ohne Wert in PowerShell nichts zurückgibt.quelle
Japt ,
5642 BytesErläuterung
Probieren Sie es online!
quelle
Java 8, 99 Bytes
Erläuterung:
Probieren Sie es hier aus.
quelle
c->"`1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./".replaceAll("(?s).*(.)"+c+".*","$1")
.JavaScript (ES6), 74 Byte
Da
/
nicht in meinem String, wirdindexOf
zurückgegeben-1
, was bei Inkrementierung.
zur Ausgabe führt. 93 Bytes zum Verarbeiten eines Strings:quelle
GNU sed , 72 + 1 (r Flag) = 73 Bytes
Die Return-Taste kann nicht getestet werden, da sed by design die Eingabe unter Verwendung
\n
des Trennzeichens aufteilt und das Skript dann so oft ausführt, wie Zeilen vorhanden sind.Testlauf: Kontinuierliches Eingabe-Ausgabe-Paar (wenn Sie fertig sind, drücken Sie Strg + D oder Strg + C)
quelle
05AB1E , 50 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Pyth - 56 Bytes
Test Suite .
quelle