Ich möchte plötzlich wirklich Tennis spielen, aber leider habe ich keinen Platz!
Überraschung! Hier kommst du rein.
Sie müssen einen Tennisplatz für mich drucken, aber Sie müssen es aus vertraulichen Gründen in den wenigsten möglichen Bytes tun.
Tennisplatz
---------
| |
---------
| | |
xxxxxxxxx
| | |
---------
| |
---------
Antworten:
Canvas , 13 Bytes
Probieren Sie es hier aus!
quelle
Python 2, 65 Bytes
Flp.Tkc hat ein Byte gespeichert.
quelle
'|'+' '*7
für die zweite Zeichenfolge ins
ein Byte speichern!05AB1E ,
292726 BytesProbieren Sie es online!
quelle
9'-×D'|4ð׫©ûs®¨'|«û5'x×»û
versuchte ein wenig umzugestalten, kann nicht brechen 26.Python 3 -
7372 BytesPython 3.6 - 75 Bytes
Gutschrift geht an flp-tkc . Dankeschön :)
Versuch es hier!
quelle
/// ,
6456 BytesProbieren Sie es online!
Eine weitere 56-Byte-Lösung:
quelle
V , 25 Bytes
Probieren Sie es online!
Das sollten 23 Bytes sein:
Aber ich bin beim Erstellen auf mehrere Bugs gestoßen. :(
quelle
Gelee , 25 Bytes
TryItOnline!
Ich hatte gehofft, die 1,3,1-Viertel-Gerichtswiederholung zu verwenden, kann das aber nicht in weniger zusammenfassen (eine rohe Version ist 28:)
“ßṂuB’b4s3x“¢¤¢‘ị“- x|”ŒBŒḄY
.Wie?
quelle
J,
70545150 BytesDank Zgarb ein Byte gespart!
Einige Standardkomprimierungstechniken unter Verwendung eines komprimierten RLE.
quelle
9 9$'-| |-| | |x| | |'#~3 9 1 7{~4#.inv 1851926050
Ruby, 60 Bytes
Ungolfed
quelle
Bash / Unix-Tools,
5857 BytesIn der gewünschten Ausgabe werden nur vier andere Zeichen als Zeilenvorschub angezeigt, sodass jede Zeile als Zahl zur Basis 4 codiert werden kann. Der Kürze halber werden diese Zahlen dann im Skript hexadezimal geschrieben.
Der Unix-Rechner dc wird sowohl für die Konvertierung von Base-16 nach Base-4 als auch für die Stapelmanipulation verwendet, um eine einfache Wiederholung von Zeilen an den richtigen Stellen zu ermöglichen.
Bearbeiten: Ein Byte weniger durch Vertauschen von zwei der vier Basisziffern, die zum Codieren von Zeichen verwendet werden, wodurch der Befehl tr ein Byte kürzer als die vorherige Version sein kann.
quelle
JavaScript, 85 Bytes
quelle
JavaScript (ES6),
86848381 Bytes2 Bytes gespart, dank Neil
Alternative Methode # 1, 93 Bytes
Alternative Methode 2, 86 Byte
Vorgeschlagen von Neil:
Alternative Methode Nr. 3, 91 Bytes
Ein rekursiver Ansatz:
quelle
console.log('-9\n| 7|\n-9\n| 3| 3|\nx9\n| 3| 3|\n-9\n| 7|\n-9'.replace(/.\d/g,s=>s[0].repeat(s[1])))
(\n
Offensichtlich durch Zeilenvorschub ersetzen ).console.log('-\n |\n-\n |\nx\n |\n-\n |\n-'.replace(/.*/g,s=>s.repeat(9).slice(-9)))
.|
anstatt des einzelnen Leerzeichens, das in meinem Kommentar erscheint.SOGL 0.5 ,
242320 Bytes (nicht konkurrierend)Erläuterung:
Wie funktioniert die komprimierte Zeichenfolge?
Die von base250 nach binary konvertierte Zeichenfolge lautet
1000000100111110010100001110100000001100010001
und ungefähr, was es tut:
nicht konkurrierend, weil die Sprache die Herausforderung datiert. Und diese Herausforderung ist erst einen Tag alt. Ich wusste, dass ich gestern etwas hätte aufstellen sollen. Ich habe dies als Test für meine Sprache durchgeführt und es endete zu gut, um nichts zu posten. Ich bin mir ziemlich sicher, dass dies auch mehr zum Golfen ist.
quelle
/// 59 Bytes
Probieren Sie es online!
Outgolfed ...
quelle
Javascript (ES6), 86 Byte:
Hier testen:
quelle
b
Dies bedeutet, dass Sie die neue Zeile nachxxxxxxxxx
und zwischena
und entfernen könnenb
. Sie können , indem Sie weitere 3 Bytes speichern ,a
um---------
erste und dann die zweite Reihe und ein an sich verketten.05AB1E , 26 Bytes
Verwendet die CP-1252- Codierung. Probieren Sie es online!
quelle
PHP,
6662 BytesDies ist die ursprüngliche Antwort (66 Bytes):
Aufgrund der unbekannten Konstante wird ein Hinweis generiert
x
. Der Hinweis kann durch Setzenerror_reporting=0
inphp.ini
oder in der Kommandozeile unterdrückt werden :Die letzte Zeile der Ausgabe endet nicht mit einem Zeilenumbruch.
Die aktualisierte Antwort (62 Byte), die eine von @Titus vorgeschlagene Verbesserung verbessert:
Führen Sie es ohne Konfigurationsdatei aus (standardmäßig auf
error_reporting=0
diese Weise):Beide Versionen des Codes enthalten wörtliche neue Zeilen, die in die Zeichenfolge eingebettet sind (1 Byte kürzer als
\n
) und die nicht entpackt werden können.quelle
-d error_reporting=0
, nur zu verwenden-n
.<?=$a=($b="---------\n|")."...
.-n
ist viel kürzer als-d error_reporting=0
:-) Die Antwort enthält in der Tat nur 66 nützliche Zeichen. Ich habe sie mit gezähltls -l
und vergessen, dass myvi
so konfiguriert ist, dass die Datei mit einer neuen Zeile endet. Ich habe deine Verbesserung verbessert und 3 weitere Bytes zusammengedrückt. Danke.PHP, 72 Bytes
Ich hasse es fast, wenn es so kürzer ist als ein bisschen zu rechnen.
quelle
Ruby, 52 Bytes
Unter Verwendung der Doppelsimmetrie sind die Zeilen:
0-1-0 / 2-3-2 / 0-1-0
Die Schleife kann leicht abgerollt werden und die verschachtelte Liste wird bei der Ausgabe abgeflacht.quelle
Pyke,
282625 BytesProbieren Sie es hier aus!
quelle
05AB1E, 25 Bytes
Verwendet die CP-1252- Codierung. Probieren Sie es online!
Erläuterung:
quelle
Vim, 32 Bytes
Dadurch wird der Tennisplatz in einen Vim-Puffer gedruckt.
^M
repräsentiert die Eingabetaste (0x0d) und^[
ist die Escape-Taste (0x1b). Sie können diese Tastenanschläge / Code ausführen, indem Sie sie in einer Datei speichern und ausführenDrucken nach Standard
Wenn es stattdessen auf stdout gedruckt werden soll, können Sie den Puffer in einer Datei speichern (ich habe "a" verwendet) und die jeweils eingestellte Shell
vim
(ich habe sie verwendetbash
) sowie dascat
Programm zum Drucken des Tennisplatzes verwenden stdout (51 bytes):Es ist das gleiche wie die frühere Version, aber mit
:w!a|sil !cat %^M:q^M
am Ende hinzugefügtquelle
J, 36 Bytes
Dies funktioniert auf der REPL, der Standardmethode für die Verwendung von J:
Mit 41 Bytes kann ich das Ergebnis auf STDOUT ausgeben:
Probieren Sie es online!
Erläuterung
Ich baue den Tennisplatz nacheinander.
quelle
PowerShell ,
6766 BytesProbieren Sie es online!
Nur ein paar Zeichenfolgen multiplizieren, Variablen setzen und sicherstellen, dass sie in Parens eingeschlossen sind, um Kopien in der Pipeline zu platzieren. Die Standardeinstellung
Write-Output
bei Programmabschluss gibt uns Zeilenumbrüche zwischen kostenlos.Vielen Dank an @ConnorLSW für das Speichern eines offensichtlichen Bytes.
quelle
$(' '*7)
ist eigentlich 8 Zeichen, wäre kürzer, nur| |
als Leerzeichen zu tun .ToLower()
Python 2, 75 Bytes
Verwendet Variablen, die von @GurupadMamadapur entlehnt wurden
Alternative auch für 75
quelle
Emacs,
4335 TastenanschlägeM-9
x
RET: neun x, returnC-SPC: set mark
|
M-3 SPC|
M-3 SPC|
RET: pipe, drei Leerzeichen, pipe, drei Leerzeichen, pipe, returnM-9
-
RET: neun Bindestriche, return|
M-7 SPC|
RET: pipe, sieben Leerzeichen, pipe, returnM-9
-
RET: neun Bindestriche, returnC-x C-x: exchange point and mark, select region
M-w: Bereich kopieren
C-p: vorherige Zeile
C-y: Ruck kopierter Text
M-x
rev-r
RET:reverse-region
Befehl ausführenquelle
Lua, 82 Bytes.
Ich habe viele Methoden ausprobiert, und doch hat diese den Sieg davon getragen.
quelle
Aufdringlich , 33 Bytes
Diese Frage hatte 33 Upvotes und es gab 33 Antworten, also musste ich nur eine 33-Byte-Lösung posten ...
Probieren Sie es online!
Erläuterung
Der Code kann in mehrere Teile aufgeteilt werden, um das Verständnis zu erleichtern. Der erste Teil funktioniert so:
Der Stack ist jetzt:
Der Spiegeloperator
w
spiegelt dann den gesamten Stapel und erzeugt:Dann:
Der Stapel fängt jetzt an, wie der Tennisplatz auszusehen:
Zum Abschluss verwenden wir noch einmal den Spiegeloperator
w
, der diese Zeichenfolge widerspiegelt, um den vollständigen Tennisplatz zu erzeugen.Jetzt muss nur noch gedruckt werden, und das erledigt der
"
Charakter.quelle
Unix Shell; mit dc und tr; 55 Bytes: (Optimierung der Mitchell Spector Lösung)
Andere Lösungen: Verwenden von sed; 81 Bytes;
Gleichstrom in Funktion verwenden: 88 Bytes
oder
Verwendung von bc in Funktion: 99 Bytes
quelle
Powershell, 56 Bytes
Erklärung: unkomplizierte Gerichtshälfte
Alternativ 68 Bytes
Erläuterung: Für die Anzeige von Zeilen und Spalten werden die gleichen Indizes verwendet
quelle