Geben Sie für ein bestimmtes Zeichen das gesamte QWERTY-Tastaturlayout (mit Leerzeichen und Zeilenumbrüchen) auf dem Bildschirm aus, das dem Zeichen folgt. Die Beispiele machen es deutlich.
Eingang 1
f
Ausgang 1
g h j k l
z x c v b n m
Eingang 2
q
Ausgang 2
w e r t y u i o p
a s d f g h j k l
z x c v b n m
Eingang 3
m
Ausgang 3
(Programm wird ohne Ausgabe beendet)
Eingang 4
l
Ausgang 4
z x c v b n m
Kürzester Code gewinnt. (in Bytes)
PS
Zusätzliche Zeilenumbrüche oder zusätzliche Leerzeichen am Ende einer Zeile werden akzeptiert.
Antworten:
CJam,
4240 BytesTeste es hier.
Erläuterung
quelle
e#
? Ist es die CJam-Syntax für einen Kommentar? Danke im Voraus.Pyth, 33 Bytes
Beachten Sie, dass einige Zeichen nicht druckbar sind. Versuchen Sie es online im Pyth-Compiler .
Wie es funktioniert
quelle
\
ist äquivalent zud
.md5
keine 5 Felder erstellt.d
ist die Standardvariable, die durch das iterable-Argument des Kartenoperators iteriert. UndjL\ <list>
ist einfach eine Abkürzung für den Kartenoperatormj\ d<list>
.Perl, 56 Bytes
Zählt man den Shebang als 3, wird die Eingabe von stdin übernommen. Wenn ein führender Zeilenumbruch kein Problem mit Eingaben
p
und istl
,/$_\n?/
kann er durch einen leeren ersetzt werden$_
, um 4 zu sparen.Beispielnutzung
quelle
\K
beigebracht hast !s/.\B/$& /g
würde genauso gut funktionieren. Ein besseres Beispiel .GS2 ,
3837 BytesDer Quellcode verwendet die CP437- Codierung. Probieren Sie es online!
Testlauf
Wie es funktioniert
quelle
C #, 112 Bytes
105110Die Anzahl ist um 5 Bytes gestiegen, aber korrekter! Danke @ MartinBüttner !!
Nicht golfen
quelle
JavaScript (ES6), 60 Byte
Verwendet die gleiche Technik wie die meisten anderen Antworten. Vorschläge willkommen!
quelle
.join` `
würde das nichts tun und es würde keine Leerzeichen im Ergebnis geben.Ruby,
6357 BytesNimmt das Zeichen als Kommandozeilenargument:
ruby keyboard.rb e
quelle
TeaScript ,
504544 BytesTeaScript ist JavaScript zum Golfen.
Ungolfed und Erklärung
quelle
JavaScript ES6, 73
Wenn ein führender Zeilenumbruch nicht zulässig ist, wenn der Parameter
p
oder istl
, dann 83quelle
Python, 83 Bytes
Probieren Sie es online aus
quelle
Sed, 59 Zeichen
(58 Zeichen Code + 1 Zeichen Befehlszeilenoption.)
Probelauf:
quelle
Ruby,
8687837166Das zusätzliche Leerzeichen nach
m
soll verhindern, dass das Programm abstürzt, wenn die Eingabe 'm' ist.Vielen Dank an @manatwork für ~ 16 Bytes an Tipps
quelle
ARGV
→$*
;each_char
→chars
;do
..end
→{
..}
;printf
→$><<
+%
würde dazu führen:"qwertyuiop↵asdfghjkl↵zxcvbnm".split($*[0])[1].chars{|i|$><<"%s "%i}
. Mehr in Tipps zum Golfen in Ruby ..
in regulärem Ausdruck stimmt nicht überein\n
: standardmäßig besser zu nutzen , dass für den Abstandputs"qwertyuiop↵asdfghjkl↵zxcvbnm ".split($*[0])[1].gsub(/./,'\& ')
. Die Codelänge bleibt jedoch gleich.PHP, 88 Bytes
Erfordert die
-F
Befehlszeilenoption, die als 3 gezählt wird. Es wird die Standardeinstellung INI angenommen (Sie können Ihre lokale INI mit deaktivieren-n
).Beispielnutzung
quelle
Prolog (SWI),
153-133BytesBearbeiten: Schneiden Sie 20 Bytes mit Tipps von @Fatalize
Code
Erläuterung
Beispiele
quelle
atom_codes
Teil mit den Anführungszeichen kürzen , die die Zeichenfolgencodes begrenzen (so dass Sie L im Aufruf von direktb
durch die Zeichenfolge ersetzen können ).b([A,_|T],[H]):-A=H,writef('%s',[T]);b(T,[H]).
anstelle von 2 verschiedenen Regeln fürb
7 Byte kürzer. Normalerweise ist es immer kürzer, alle Regeln mit ORs zu einer einzigen zusammenzuführen,;
anstatt mehrere Regeln zu schreiben, weil Sie vermeiden, den Namen und die Parameter des Prädikats zu wiederholen und auch einen Zeilenvorschub zu vermeiden;)Befunge, 122 Bytes
Es wurde hier getestet: Befunge-93 Interpreter .
Wie es funktioniert
'q w e r t y u i o p\na s d f g h j k l\nz x c v b n m'
wird auf den Stapel geschoben.@ZVD0FHJ:LNP^\<>,2B48X.T6R
) Werte in N wird gepusht.Hinweis
Ich habe die Codierung so gewählt, dass die Zeichenfolge mit beginnt,
@
um sie mit dem Programm zu überlappen. Diese Zeichenfolge wird mit dem folgenden Python-Code generiert:quelle
Mumps - 102 Bytes
Golf-Skript:
Ungolfed und kommentiert:
Die Regel, die zusätzliche Zeilenumbrüche zulässt, hat mir fast 10 Bytes erspart ...
quelle
Java - 107 Bytes
Ungolfed mit Wrapper-Klasse Lesen von System.in
Wenn Leerzeichen am Zeilenanfang akzeptabel wären, könnten wir auf 99 Bytes reduzieren:
quelle
Python 2,
586763 Bytes ##Nimmt Eingaben als Zeichenfolge oder Zeichen. Teilt den String am Eingang und druckt alles nach dem Teilen aus.
(Zum ersten Mal Code-Golfen, bitte seien Sie vorsichtig: P)
BEARBEITEN: Es wurden keine zusätzlichen Leerzeichen zwischen den Zeichen hinzugefügt
BEARBEITEN 2: Geändert, um eine anonyme Lambda-Funktion zu sein und das zusätzliche aufgeteilte Argument zu entfernen, wodurch 4 Bytes gespart werden
quelle
print
, aber es scheint, dass dadurch nicht die Leerzeichen zwischen den einzelnen Buchstabenpaaren gedruckt werden."f"
lambda s:...
. Ich denke der Split braucht kein Argument von1
, da der Charakter nur einmal vorkommt. Dies gibt Leerzeichen am Anfang nachfolgender Zeilen aus, nicht sicher, ob dies zulässig ist.Rubin,
59 5767 BytesLeerzeichen zwischen Buchstaben hinzugefügt
quelle
nil
. Bei Eingabe von "m" wird dies jedoch angezeigt . Dies ist an sich kein Problem, verursacht jedoch Probleme beim Vervollständigen des Codes, um Leerzeichen zwischen den Buchstaben einzufügen.JavaScript, 88 Bytes
(Keine Notwendigkeit im Leerzeichen nach dem ersten Zeichen, da es nie zur Ausgabe kommt)
Benachrichtigt die Tastatur, wenn Sie anrufen
s("some letter")
. Kann auch mitdocument.write()
oder gemacht werdenconsole.log()
, aber hey, es ist länger: PDemo:
quelle
\n
anstelle;
der Zeichenfolge verwenden und das Ersetzen entfernen.SQL (MS T-SQL), 172 Bytes
Ungolfed:
Ich bin neu hier, habe diese Seite gerade erst entdeckt. Keine Ahnung, ob ich richtig gepostet habe oder ob T-SQL erlaubt ist, aber ich weiß, dass das obige Verfahren funktioniert.
quelle
O 2,2,
4846 ZeichenProbelauf:
O, 61 Zeichen
Probelauf:
quelle
"qwertyuiop\nasdfghjkl\nzxcvbnm\n"i/r;s{n.'\n=ST?}d
Funktioniert nur mit dem neuen Interpreter, hat aber 51 Bytes.git submodule update --init
, dannmake
Japt ,
4942414038 BytesJapt ist eine verkürzte Version von Ja vaScri pt . Dolmetscher
Das
?
sollte das nicht druckbare Unicode-Zeichen U + 0086 sein.Wie es funktioniert
Schlagen Sie jetzt CJam! :) Vorschläge willkommen!
Nicht konkurrierende Version, 12 Bytes
Ab 11. Januar habe ich hinzugefügt ein cooles neues Feature Japt: Wenn das Programm eine führende Komma enthält, die Variablen
ABCDEFGHIJL
sind auf verschiedene Werte neu definiert.D
ist auf gesetzt"QWERTYUIOP\nASDFGHJKL\nZXCVBNM"
, reicht also;Dv
aus, um die Zeichenfolge hier zu ersetzen.quelle
Gema, 56 Zeichen
Probelauf:
quelle
8086 Maschinencode + DOS, 61 Bytes
Hexdump (mit ASCII-Ansicht rechts):
Assembly-Quellcode (kann mit tasm zusammengestellt werden):
Zwei lustige Dinge hier:
qwerty
Zeichenfolge ist0x011e
. Das obere Byte davon ist 1, was die DOS-Funktionsnummer für die Zeicheneingabe ist. Dies spart 1 Byte im Code.AND
mit machen0x20
, werden sie alle in ein Leerzeichen umgewandelt, das dann gedruckt wird. Wenn das vorherige Zeichen ein Zeilenende-Byte war, wird es auf 0 gesetzt und es wird kein Leerzeichen ausgegeben. Dies wird verwendet, um die unsinnige Abfolge0d 20 0a 20
am Zeilenende zu vermeiden .Eine fast lustige Sache:
Ich habe versucht, nach dem Eingabezeichen zu suchen, beginnend mit der Adresse 0 (die die Programmgröße um 2 Byte verringert hat), anstelle des üblichen Ortes (Beginn der Zeichenfolge). Das hat fast funktioniert; Die Eingabe
t
schlug jedoch fehl , da der Code selbst das Byte enthältt
(als Teil der Codierung eines bedingten Sprungs). Alsot
würde es ein paar Junk-Bytes ausgeben:quelle
𝔼𝕊𝕄𝕚𝕟 32 Zeichen / 79 Byte
Try it here (Firefox only).
Zumindest gewinne ich in Char Count ... (Byte Count ist eine andere Geschichte.)
Oh ja, habe gerade festgestellt, dass ich vor einiger Zeit Indexverknüpfungen (
⎖1
anstelle von[1]
) implementiert habe . Wie dumm von mir!quelle
C ++,
129, 11297 BytesUngolfed:
quelle
puts
anstelle vonstd::cout<<
#include
fürputs
, aber offenbar kann ich nicht!strstr
es eine Sache war.<stdio.h>
fürstrstr
.Batch, 206 + 2 = 208 Bytes
Da dies eine verzögerte Erweiterung verwendet, müssen Sie sie mit aufrufen
CMD /V /C keyboard.cmd <letter>
und12 für den/V
Switch hinzufügen .quelle
cmd
sie/VC
wie POSIX-Tools akzeptiert würde . Aber wie ich weiß,/V
braucht es eine eigene/
, die auch gezählt wird.Python, 109 Bytes
Ich weiß, es ist ein bisschen groß, aber es ist alles, was ich jetzt tun kann!
quelle
kb()
am Ende brauchen . Es reicht aus, die Funktion zu definieren. Auch 1 Einrückungsbereich ist ausreichend. Nachdem ich diese Änderungen vorgenommen habe, erhalte ich 108 Bytes, wenn ich diese Site benutze .Bash, 80 Bytes
Versuchen Sie es selbst, ersetzen Sie entweder $ 1 durch das gewünschte Zeichen oder erstellen Sie ein #! / Bin / bash-Skript.
Hier einige Beispiele von Cygwin:
Es ist nicht die kürzeste, aber ich bin trotzdem stolz darauf!
quelle