Wenn Sie Markup wie im SE-Netzwerk verwenden, wird es, wie Sie vielleicht wissen, durch einen Einzug von vier Leerzeichen vor einer Textzeile als Teil eines Codeblocks gekennzeichnet. Wenn nicht, hier ein Beispiel (mit .
Darstellung eines Leerzeichens):
.... Code
.... Mehr Code
Ergebnisse in
Code
More code
Das Problem ist, dass Sie beim Kopieren und Einfügen von Code in eine Antwort jede Zeile manuell einrücken müssen. Dies ist besonders schwierig, wenn Sie mit ungolfed Code arbeiten, da dieser wahrscheinlich bereits eingerückt ist und Verwirrung stiften kann. Sie können einfach Ihren Code auswählen und drücken Ctrl + K
, es stellt sich heraus. Stunden meines Lebens ohne Grund verschwendet ...
Ihr Ziel ist es also, eine Eingabe mit vier Leerzeichen vor jeder Zeile zurückzugeben. Um Zeit beim Kopieren und Einfügen zu sparen, müssen Sie die gesamte Eingabe als einzelne Zeichenfolge verarbeiten (sofern Ihre Sprache sie analysieren kann). Wenn Ihre Sprache ein Zeichen (z. B. Zeilenumbrüche) in Zeichenfolgen nicht verarbeiten kann, können Sie davon ausgehen, dass es durch eine andere von der Sprache unterstützte Methode gekennzeichnet / maskiert wird. Die Ausgabe muss jedoch jede Zeile in einer eigenen Zeile ausgeben (also keine Übergabe wie ....foo\n....bar
).
Standardlücken sind nicht erlaubt. Da es sich um Code-Golf , die kürzeste Antwort in Bytes gewinnt. Viel Glück!
quelle
Ctrl + K
Antworten:
V , 4 Bytes
Probieren Sie es online!
(Beachten Sie das nachfolgende Leerzeichen)
V ist in Latin1 codiert, wobei dies folgendermaßen codiert ist:
Erläuterung
Hier ist eine Lösung, die auch 4 Bytes in UTF-8 ist!
quelle
4ñ>G
Buntstift , 7 Bytes
Probieren Sie es online!
Erläuterung
Crayon ist eine stapelbasierte Sprache zum Erstellen von ASCII-Grafiken. Es befindet sich noch im Anfangsstadium der Entwicklung, aber es weiß gerade genug, um diese Herausforderung mit einer relativ geringen Anzahl von Bytes abzuschließen:
Das Zeichnen des geschützten Bereichs ist erforderlich, da Crayon die Ausgabe automatisch auf ein Rechteck zuschneidet. Ohne NBSP wird nur die ursprüngliche Eingabe gedruckt.
quelle
Retina , 8 Bytes
Probieren Sie es online!
In der zweiten Zeile stehen vier Leerzeichen. Alternative Lösungen verwenden entweder
m`^
oder%1`
oder1%`
in der ersten Zeile. All dies stimmt mit der Position am Anfang jeder Zeile überein und ersetzt sie durch vier Leerzeichen.quelle
Cheddar, 31 Bytes
Wirklich einfach, aber ich habe gepostet, weil es die neuen Funktionsoperatoren zeigt.
(" ":+)
ist das gleiche wieA -> " " + A
. (dh+
op als eine Funktion mit" "
gebunden an LHS).Ich glaube nicht, dass es einer Erklärung bedarf
quelle
:
würde es Probleme geben mit?:
:
keine Übereinstimmung?
gibt. Dies erfordert immer noch, dass die funktionale:+)
@
das?Python ,
4439 BytesDurchgestrichen & nbsp; 44 & nbsp; ist nicht mehr 44 :)
-5 Bytes dank Ovs (Vermeiden Sie das Löschen mit einem Prepend)
Probieren Sie es online!
quelle
lambda s:' '*4+s.replace('\n','\n ')
für 39 Byteslambda s:' '*4+s.replace('\n','\n ')[1:]
für 40 (was nicht funktioniert) oder etwas anderes?lambda s:' '*4+s.replace('\n','\n<4 spaces>')
TIOJavaScript, 26 Bytes
Vielen Dank an @Conor O'Brien, dass er 8 Bytes abgespielt hat
Durch einen regulären Ausdruck mit / g ersetzen ersetzt alle Instanzen. m veranlasst den Regex, jede Zeile für den Beginn der Zeichenfolge ^ separat zu behandeln.
Probieren Sie es online!
quelle
asdf
immer wieder zu wiederholen.x=>x.replace(/^|\n/g,"$& ")
Sie die erste Zeile und die folgenden Zeilen auf einmalPython 2,
8745 BytesEingabe wird als genommen
'Line1\nLine2\nLine3...'
(Anführungszeichen erforderlich)Vielen Dank an @WheatWizard, dass Sie mir eine Idee gegeben haben, die mir beim Golfen von 42 Bytes geholfen hat.
quelle
Ctrl + K
, waren die wahren Gründe für diese Herausforderung ... weniger als nur reine Rätsel.^
``.Gelee , 8 Bytes
Probieren Sie es online!
Wie?
Einige andere 8-Byte-Varianten sind:
Ỵṭ€⁶Yµ4¡
(4 Teilungswiederholungen in Zeilenumbrüchen, ein einzelnes Leerzeichen anheften);⁶ḤḤ;ЀỴY
(Zweimaliges Verdoppeln ist wie das Multiplizieren mit 4,Ѐ
Karten über dem richtigen Argument, damit wir verketten können, anstatt zu heften);und andere Umlagerungen davon.
quelle
Emacs, 5 Keychords, 5 Bytes
In zumindest einer häufig verwendeten Codierung für die Tastatureingabe, jede dieser keychords ist ein einzelnes Byte:
18 68 b4 18 09
. Emacs-Einträge sind in der Regel sehr keychordlastig, da jedes druckbare ASCII-Zeichen für sich selbst steht, außer als nachfolgendes Zeichen eines Befehls mit mehreren Zeichen (dh, nur Keychords können verwendet werden, um tatsächliche Befehle zu geben).Ich bin mir nicht sicher, wie dies mit Vim verglichen wird (im Gegensatz zu V). Aber Vim wird ziemlich häufig für PPCG verwendet, und deshalb dachte ich, dass die andere Seite des Editor-Krieges es verdient, auch im Rampenlicht zu stehen.
Dies setzt voraus, dass die E / A über den Puffer (das Äquivalent der normalen E / A-Konventionen für vim) oder aus einer Datei entnommen und auf dem Bildschirm ausgegeben wird (was dasselbe ist). Wenn Sie die E / A-Vorgänge stattdessen über die Region ausführen, was für einige Programmarten selbstverständlich ist, können Sie die beiden führenden Zeichen entfernen, um eine Punktzahl von 3 Byte zu erzielen. Ich glaube jedoch nicht, dass dies den PPCG-Regeln entspricht.
Erläuterung
Der letzte hier verwendete Build ist natürlich unglaublich nützlich für diese Herausforderung; der rest ist nur struktur.
quelle
PowerShell,
2928 Bytes-1 Dank fergusq wird anstelle des `n ein tatsächlicher Zeilenumbruch verwendet
Nimmt die
"$args"
Eingabe als Zeichenfolge (umgewandelt mit "s") und setzt-split
sie in eine neue Zeile, durchläuft sie mit einer Schleife (%{}
), fügt vier Leerzeichen (" "*4
) hinzu und die Zeile ($_
) gibt sie implizit aus.quelle
Pyth, 10 Bytes
Versuch es!
Wenn die Eingabe als Liste von Zeilen zulässig wäre, könnte ich dies in 7 Bytes tun:
Versuch das
längere lösungen:
12 Bytes:
12 Bytes:
13 Bytes:
quelle
jbm*4\ .z
d
, whoops. Ihre 10-Byte-Antwort ist sowieso das, wonach ich gesucht habeRöda , 21 Bytes
Probieren Sie es online!
Es ist eine anonyme Funktion. Die Eingabe wird aus dem Stream gezogen.
Erläuterung:
quelle
identity()
nur ziehen alle Werte von STDIN?identity
Ruft Werte aus dem Eingabestream ab und verschiebt sie in den Ausgabestream. Es ist identisch mitpush(x) for x
.Perl 5 , 11 + 1 = 12 Bytes
11 Byte Code +
-p
Flag.Probieren Sie es online!
Die Erklärungen sollen einmal kurz sein: Der reguläre Ausdruck ersetzt jeden Zeilenanfang (
^
kombiniert mit dem/m
Modifikator) durch vier Leerzeichen - das Ende.quelle
Perl 6 , 11 Bytes
Versuch es
Erweitert:
quelle
sed ,
16109 BytesProbieren Sie es online!
Bearbeitungen
Reduzierte Lösungsgröße von 16 auf 10 Byte dank Kritixi Lithos .
-1 Byte dank Seshoumara .
quelle
-r
Flag (1 Byte) können Sie bis zu 15 Byte abrufen, um die Backslashes vor den Klammern zu entfernen.s/.*/ &/
(entfernen Sie die Klammern und ersetzen Sie\1
durch&
)*
.s:^: :
für 9 Bytes.Java 7, 58 Bytes
Erläuterung:
Probieren Sie es hier aus.
quelle
replaceAll
.replace
und.replaceAll
ersetzen alle Vorkommen der gesuchten Zeichenfolge durch die Ersetzung..replace
wird für wörtliche Zeichenfolgen und.replaceAll
für reguläre Ausdrücke verwendet. Da\n
es sich nicht.replace
um einen regulären Ausdruck handelt , können Sie problemlos alle Zeilenumbrüche durch einen Zeilenumbruch + vier Leerzeichen ersetzen. Dies können Sie auch unter dem von mir angegebenen Link "Try it line" überprüfen.Brain-Flak ,
109103 Bytes-6 dank Weizen-Assistent
Beinhaltet +1 für
-c
Probieren Sie es online!
quelle
PHP, 43 Bytes
quelle
Gestapelt , 13 Bytes
Probieren Sie es online!
Erläuterung
quelle
Oktave, 17 Bytes
Probieren Sie es online!
quelle
MATL , 12 Bytes
Die Eingabe ist eine Zeichenfolge mit Zeilenumbrüchen. Um dies einzugeben, müssen Sie das Zeichen 10 zwischen den normalen Zeichen verketten, um die Newline darzustellen (eckige Klammern sind die Verkettung):
Probieren Sie es bei MATL online!
Erläuterung
quelle
PHP, 16
renn mit
php -R <code>
.-R
führt den angegebenen Code für jede Eingabezeile aus und$argn
erhält die aktuelle Eingabezeile. Auf diese Weise wird einfach jede Zeile mit vier zusätzlichen Leerzeichen gedruckt.quelle
V , 3 Bytes (nicht konkurrierend)
In dieser Antwort wird eine Funktion verwendet, die ich schon seit einiger Zeit hinzufügen möchte, die ich aber erst heute hinzugefügt habe. Das macht diese Antwort nicht konkurrierend und ungültig für das Gewinnen. Aber es ist immer noch cool, ein so nützliches / wettbewerbsfähiges Feature zu präsentieren!
Probieren Sie es online!
Erläuterung:
quelle
Vim, 6 Tastenanschläge
Es wird davon ausgegangen, dass sich der Cursor am Anfang der Datei befindet, als ob Sie die Datei von der Befehlszeile aus über geöffnet hätten
vim filename
.Mit einem Vim für Einbuchtung 4 verwenden Räume konfiguriert wäre es 2 Tastenanschläge werden:
>G
.quelle
ZZ
am Ende entfernen können . Normalerweise reichen vim-Übermittlungen aus, wenn sie nur im Puffer und nicht in einer Datei ausgegeben werden.ZZ
dann entfernt .Japt ,
76 Bytes1 Byte dank @ETHproductions eingespart
Probieren Sie es online!
Erläuterung:
quelle
S²²
würde auch an stelle von funktionierenSp4
, nicht dass es dir in diesem fall irgendwas erspart. Apropos, ich denke, Sie können einfachmiS²²R
dieR
Flagge entfernen (im Grunde genommenmiS²²
, aber vorher an Zeilenumbrüchen teilen und danach an Zeilenumbrüchen teilnehmen)UberGenes , 62 Bytes
Ich musste mich mit UberGenes dieser Herausforderung stellen, da ein sehr ähnliches Programm (das nur ein Leerzeichen einfügte) eines der ersten Programme war, die ich jemals in der Sprache geschrieben habe, und es schien, als wäre es einfach, es für diesen Zweck zu ändern.
Wie es funktioniert:
quelle
CJam , 11 Bytes
Danke an @ Challenger5 für die Korrektur
Probieren Sie es online!
Erläuterung
quelle
abc\n\ndef
. Es wird zurückgegeben,....abc\n....def
weil%
leere Elemente verworfen werden. Sie möchten/
stattdessen zum Teilen verwenden, da die leeren Elemente beibehalten werden.J-uby ,
1716 BytesErläuterung
Dies übersetzt direkt in (in Ruby):
quelle
Eigentlich 16 Bytes
Probieren Sie es online!
Erläuterung:
quelle
C
66-65BytesProbieren Sie es online!
quelle
s;char*l;f(){while(getline(&l,&s,stdin)+1)printf("____%s",l);}
denen 62 Bytes gehen<stdio.h>
(wegen derstdin
).