Einführung:
Inspiriert von diesem Kommentar von @MagicOctopusUrn auf @Emignas 05AB1E-Antwort für meine " Es war nur ein Fehler " -Herausforderung :
8F9ÝÀNð×ý}».∊
Ich habe ein Raumschiff gemacht! Und ich war ganz aufgeregt, eine 12-Byte-Bearbeitung vorzuschlagen. - Magic Octopus Urn 17. Juli 17 um 20:10 Uhr
Welches ist ein 05AB1E (Legacy) -Programm, das dazu führt, dass:
1234567890
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1234567890
Herausforderung:
Eingabe: Eine nicht leere Zeichenfolge
Ausgabe: Fügen Sie von außen nach innen in jede Zeile ein Leerzeichen mehr ein, ähnlich wie in der obigen Ausgabe length - 1
. Für eine Eingabe wäre 1234567890
die Ausgabe also stattdessen:
1234567890
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1234567890
Warum? Die Länge von 1234567890
ist 10
. Also geben wir zunächst 10 Zeilen aus: die erste Zeile ohne Leerzeichen; zweite mit einem Leerzeichen; dritter mit zwei; usw. Und dann length - 1
kehren wir (ohne die mittlere Zeile mit doppelten Leerzeichen zu haben) zur ursprünglichen Eingabe zurück, während wir nach unten gehen.
Herausforderungsregeln:
- Die Eingabe ist garantiert nicht leer (eine Länge
>= 1
). (Für einzelne Zeicheneingaben geben wir einfach dieses Zeichen aus.) - Jede Menge von nachgestellten / führenden Leerzeichen / Zeilenumbrüchen ist zulässig, solange die Ausgabe selbst (wo immer auf dem Bildschirm) korrekt ist. (Leerzeilen zwischen den Ausgabezeilen sind ebenfalls nicht zulässig.)
- Die Eingabe enthält nur druckbare ASCII-Zeichen ohne Leerzeichen (Code-Punkt-Bereich
[33, 126]
). - I / O ist flexibel. Die Eingabe kann als STDIN-, Argument- oder Funktionsparameter erfolgen. Kann eine Liste / ein Array / ein Stream von Zeichen anstelle eines Strings sein. Die Ausgabe kann auch eine Liste / ein Array / ein Stream von Zeichen anstelle von Zeichenfolgen sein. kann auf STDOUT gedruckt werden; wird als durch neue Zeilen getrennte Zeichenfolge zurückgegeben; usw.
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu.
- Außerdem wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle:
Input: @
Output:
@
Input: test
Output:
test
t e s t
t e s t
t e s t
t e s t
t e s t
test
Input: ?!
Output:
?!
? !
?!
Input: Spaceship
Output:
Spaceship
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
Spaceship
Input: 05AB1E
Output:
05AB1E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
05AB1E
Input: )}/\
Output:
)}/\
) } / \
) } / \
) } / \
) } / \
) } / \
)}/\
ಠ_ಠ
stellen Sie fest, dass Sie es vor einem Jahr versehentlich gemacht habenಠ⌣ಠ
.Antworten:
Japt ,
86 BytesNimmt Eingaben als ein Array von Zeichen und gibt ein Array von Zeichenfolgen aus.
Versuch es
Erläuterung
Original, 8 Bytes
I / O ist eine Zeichenfolge. Verwendet die
-R
Flagge. Schließt nachfolgende Leerzeichen in jede Zeile ein.Versuch es
Erläuterung
quelle
S.ç()
FTW noch einmal :-)R ,
10599858479 Bytes-6 danke an @Kevin Cruissen und @Giuseppe
-14 von der Umstellung auf eine auf Regex basierende Methode
-1 danke an @ Giuseppe
-5 danke an @digEmALl
Probieren Sie es online!
quelle
in(r<-
.s
einmal, damit Sie es direkt als Argument verwendenwrite
können. wir bringen Sie auf 99 Bytes1
eher als ein""
in seinwrite
? Ich grabe deine Verwendung vonMap
!collapse
Argument zu schlagen könnte ,paste
aber es passiert einfach nicht ...JavaScript (ES6), 53 Byte
Nimmt die Eingabe als Array von Zeichen.
Probieren Sie es online!
quelle
Kohle , 10 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
quelle
[
zu]
- oder ist das ein weiteres separates Kommando?Canvas , 8 Bytes
Probieren Sie es hier aus!
Die 7-Byte- Version war zu gut für diese Herausforderung.
quelle
/
s in aX
?─
- vertikal palindromize. Die Palindromisierung von Canvas macht coole Sachen . Der überlappende Teil hat auch seinen eigenen Charakter .Python 2 ,
7270686665 Bytes-2 Bytes dank Kevin Cruijssen
-3 Bytes dank ovs
Probieren Sie es online!
quelle
c==len(w)-1
kann mit 1 Byte golfen werdenc+2>len(w)
. BEARBEITEN: In deiner neuen 70-Byte-Version0<c
kann es seinc
.05AB1E ,
109 BytesDank Adnan 1 Byte gespeichert
Probieren Sie es online!
Erläuterung
quelle
S
. Die Eingabe ist flexibel, sodass die Eingabe als Liste zulässig ist.»
weggelassen werden kann.»
die Schleife entfernen undv
in eine Karte ändernε
.εINð×ý}û»
auch?Ruby ,
5449 BytesProbieren Sie es online!
Nimmt Eingaben als ein Array von Zeichen und gibt ein Array von Zeichenfolgen aus.
quelle
Japt ,
98 Bytes-1 Byte von @Shaggy
Probieren Sie es online!
quelle
SpX
->Xî
für eine 1-Byte-Speicherung.PowerShell ,
6654 Bytes-12 bytes dank mazzy
Probieren Sie es online!
Übernimmt die Eingabe per Splatting, was sich in TIO als separate Befehlszeilenargumente für jedes Zeichen manifestiert.
Wir setzen zuerst
$a=$args
als Eingabeargument. Dann setzen wir$x
gleich dem.count
von diesem Array-1
. Wir müssen dann die Buchstaben durchlaufen, um das Raumschiff zu konstruieren. Dazu wird ein Bereich von0
bis erstellt$x
, dann$x
wieder nach unten,0
und dannGet-Unique
der entsprechende Bereich herausgezogen.Bei jeder Iteration nehmen wir unsere Eingabeargumente und
-join
diese zusammen mit der entsprechenden Anzahl von Leerzeichen. Jede dieser ZeichenfolgenWrite-Output
verbleibt in der Pipeline, und implizit erhalten wir nach Abschluss des Programms kostenlose Zeilenumbrüche.quelle
0..($x=($a=$args).count-1)+$x..0|gu|%{$a-join(' '*$_)}
Get-Unique
das auf der Range? Das ist verrückt! Vielen Dank!05AB1E (Legacy) , 9 Byte
Eingabe als Zeichenliste.
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
[
,]
und(
,)
. Vielleicht möchten Sie diese Fälle hinzufügen, um auch Holzkohle zu fangen. (Verschob die anderen Kommentare zu Emignas Antwort, weil er die Antwort war, die ich ursprünglich kommentierte)û»
anstelle von.∊
.Haskell ,
6059 BytesProbieren Sie es online!
Erläuterung
Für eine Zeichenfolge (zB
"abc"
) gelten wir zuerstdas ist das gleiche wie
Dies gilt wiederholt
(?)
(fügt jedem Zeichen im Bereich [33 ..] ein Leerzeichen hinzu ),str
bis es so viele Zeichenfolgen gibt, wiestr
Zeichen haben:["abc","a b c ", "a b c "]
Jetzt müssen wir nur noch das Ergebnis (abzüglich des letzten Elements) mit seinem umgekehrten Gegenstück verketten:
quelle
MATL ,
252213 BytesProbieren Sie es online!
Vielen Dank an Luis Mendo , der mir einen 5-Byte-Golf vorgeschlagen hat, der mich dazu inspiriert hat, 4 weitere Bytes zu sparen!
Erklärung mit Beispieleingabe
'abc'
:quelle
Gelee , 9 Bytes
Probieren Sie es online!
Gibt eine Liste von Zeilen zurück. Ausgang über TIO vorgegeben.
quelle
,€⁶$LСŒḄ
. Andere, ähnlicher, 9's:J’⁶ẋŒḄɓjⱮ
undJ’⁶ẋŒḄjⱮ@
(Ich suchte nach kürzeren, aber noch keine Freude)LḶ⁶ẋ
oderŒḄ
. Wenn Sie es jedoch schaffen, eine Rettung zu finden, rufen Sie mich an. :-),€⁶$LСŒḄ
kann es sein, dass meine Version ungültig ist, da sie ein verrücktes Nesting hat und daher möglicherweiseY
ein vollständiges Programm benötigt.['I', 'f', [[' '], 't', 'h', [['i']], 's'], ' ', 'i', ['s', ' '], 'a', [[' ', 's', 't'], 'r', ['i', 'n', 'g'], ' '], 'w', ['e', ' ', 'a', 'r', 'e'], ' ', 'd', 'o', ['o'], 'm', [[[[['e']]]]], [[[['d']]]], '!']
Zumindest habe ich 05AB1E outgolfed ...Pyth , 12 Bytes
Nur meine obligatorische Pyth-Vorlage. Ich bin ziemlich stolz darauf, daher wird eine Erklärung wahrscheinlich bald kommen.
Probieren Sie es hier aus!
Probieren Sie es hier aus!
quelle
Stax , 10 Bytes
Führen Sie es aus und debuggen Sie es
Ausgabe mit nachgestelltem Leerzeichen in jeder Zeile.
Erläuterung:
quelle
Java (JDK 10) , 115 Byte
Probieren Sie es online!
quelle
l-Math.abs(i)
kanni<0?l+i:l-i
für -2 Bytes golfen werden .l-i<0?-i:i
?l-(i<0?-i:i)
(12 Bytes).K (OK) ,
2524 BytesLösung:
Probieren Sie es online!
Erläuterung:
Port meiner K4-Lösung :
Anmerkungen:
quelle
,:'
->+,
Pascal (FPC) ,
143135 BytesProbieren Sie es online!
Ich werde wohl nur gegen Lenguage gewinnen ...
quelle
PHP,
8889 Bytesbenötigt PHP 5 oder neuer für
str_split
. Laufen Sie als Pipe mit-nR
oder versuchen Sie es online .quelle
K4 , 23 Bytes
Lösung:
Beispiel:
Erläuterung:
Verfügt in jeder Zeile über nachgestellte Leerzeichen.
quelle
C #,
11310598 BytesProbieren Sie es online!
quelle
s=>{
Vorher und}
Nachher zu einer Lambda-Funktion behoben werden . Außerdem besteht eine Sache beim Golfen darin, die Klammern um die for-Schleife zu entfernen. Probieren Sie es online aus.Scala , 82 Bytes
Probieren Sie es online aus
Scala hat viele Verknüpfungen, die mir hier helfen und die gut lesbar sind! Probieren Sie Scala
quelle
0
bis zu einer bestimmtenlength
Anzahl von Leerzeichen anstatt von0
bis zu einer bestimmtenlength-1
Anzahl von Leerzeichen. Ich kenne Scala nicht so gut, aber anscheinend können Sie beide Probleme mit +4 Bytes (insgesamt 86 Bytes) wie folgt beheben:for(i<-(0 to a.size-1)union(-a.size+2 to 0))println(a.map(_+" "*Math.abs(i)).mkString)
Nochmals willkommen, und genießen Sie Ihren Aufenthalt! :)Oracle SQL, 115 Byte
Keine Golfsprache, aber ...
Angenommen, der Wert befindet sich in
v
der Tabellenspaltet
:SQL-Geige
Oracle 11g R2 Schema Setup :
Abfrage 1 :
Ergebnisse :
(SQLFiddle gibt die Werte aus irgendeinem Grund rechtsbündig in der Spalte aus. Es gibt keine führenden Leerzeichen.)
quelle
(.)
reguläre reguläre Ausdrücke verwendet, aber können Sie Golf spielen,.
indem Sie\0
anstelle von\1
Java zum Beispiel verwenden, wie Sie es könnten? EDIT: Egal, das ist für$0
, nicht\0
.. ( Java-Beispiel von dem, was ich meinte ).8086 Maschinencode,
5653 BytesZusammengesetzt aus:
Testfall:
quelle
length
Leerzeichen und insgesamt 9 Zeilen. Die mittlere Zeile sollte jedochlength-1
Leerzeichen und insgesamt 7 Zeilen enthalten (für das 4-Buchstaben-Wort "test"). (Ich hoffe, es ist nicht zu teuer in Bezug auf Bytes zu reparieren?Haskell,
646059 BytesProbieren Sie es online!
quelle
Bash ,
115,109,105,100,97,96,92,91, 90 Bytes-5 & -3 danke an Kevin Cruissen
Probieren Sie es online!
Beachten Sie, dass , da die
\
eine Shell - Escape char ist, der Testfall)}/\
sollte mit einem extra eingegeben werden\
wie folgt aus :)}/\\
.quelle
in
undprintf
wie in Python zu entfernen ?bash
Code nur eine Zeichenfolge eingibt ( dh nur eine Zeile). Die Testfälle funktionieren alle,)}/\
müssen jedoch wie folgt mit einfachen Anführungszeichen versehen sein<<< ')}/\' read s; ...etc.
. Die Leerzeichen nachin
undprintf
werden benötigt.for
unddo
können entfernt werden.f=1
kann geändert werden zuc=f=1
. Undf=f+c
kann seinf+=c
.f!=0
anf
in der for-Schleife. Genau wie in JavaScript und Python0
ist es falsch und jede andere positive / negative Ganzzahl ist in Bash anscheinend wahr.Perl 6 , 43 Bytes
Probieren Sie es online!
Gibt eine Liste von Zeilen zurück.
Erläuterung:
quelle
C (GCC) ,
131129111 BytesProbieren Sie es online!
-20 bytes dank ceilingcat !
Probieren Sie es online!
Oder, wenn die Länge als Parameter akzeptiert werden kann:
C (gcc)
105102 Bytes-1 byte dank ceilingcat!
Probieren Sie es online!
quelle
x
abgeschattet und somit redundant deklariert.PHP,
148146143141 BytesSie können es so testen:
Ausgabe
Sandkasten
Erweiterte Version
Versuch 2, 92 Bytes
Nachdem ich @ Titus Antwort gesehen hatte, reduzierte ich meine auf diese:
Ich habe versucht, einen Weg zu finden, 1 Schleife anstelle von 2 zu verwenden. Ob Sie es glauben oder nicht, ich verwende die
for
Schleife fast nie in "echtem" Code. Es war das~
bitweise Nicht, dass ich vermisst habe ...Es ist noch ein bisschen länger bei
92
also fühle ich mich nicht so schlecht. Aber ich werde es trotzdem als zweiten Versuch einsetzen.$argn
ist die Eingabe von der BefehlszeileSandkasten
quelle
f
statt Zuweisung eines anonymen ein bis$f
-function f(
speichert 2 Bytes über$f=function(
, und Sie speichern ein anderes Byte jedes Mal , wenn Sie anrufenf(...)
statt$f(...)
. Alternativ könnten Sie die$s
2 Bytes speichern -($i)use($s)
ist 4 Bytes länger als($i,$s)
, aber Sie sparen 3 Bytes für jeden Aufruf an$f($i)
statt$f($s,$i)
; In Sprachen mit automatischer Erfassung wie JS ist dies häufiger eine sinnvolle Einsparung, da Sie die Strafe für dieuse
Abrechnung nicht bezahlen .use
aber es fühlt sich länger an. Um zu tun, dass der Sinn$i
dynamisch ist, müsste er als Referenz übergeben werden. So muss es seinuse(&$i)
und das$i
muss definiert werden, bevor es als Referenz übergeben wird$f
. Das heißt, Sie müssen es in der übergeordneten Funktion oder vor einer anderen Funktion festlegen. Für die Funktion könnte es seinfunction s($s,$i)
und nur wissen, dass es mit aufgerufen werden muss,s($s,0)
aber es scheint hässlich, und das ist in der Nähe11 bytes, use(&$i),$i
$s
und die\n
in eine echte Zeilenumbruch ändern . Das bringt es auf143
2 vom Zeilenende und 1 vom Gebrauchf
anstelle eines Closuresfunction s($s){for(;$i<strlen($s);++$i)f($i,$s);for(--$i;--$i>=0;)f($i,$s);}function f($i,$s){echo chunk_split($s,1,str_repeat(' ',$i))." ";}