Herausforderung
Drucken oder senden Sie das Stack Exchange-Favicon wie folgt:
___________________
/ \
---------------------
| |
---------------------
| |
---------------------
\__________ _____/
| /
| /
|/
Das ist Code-Golf , also gewinnt die kürzeste Antwort in jeder Sprache.
code-golf
string
ascii-art
kolmogorov-complexity
musicman523
quelle
quelle
Antworten:
Operation Flashpoint- Skriptsprache,
263195 ByteNicht das richtige Werkzeug für den Job.
Rufen Sie an mit:
Ausgabe:
Die Formatierung schlägt fehl, da die Schriftart keinen einheitlichen Abstand aufweist.
quelle
Charcoal ,
38373330 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Bearbeiten: Es ist gelungen, ein Byte mit Hilfe einer Reflektion zu speichern, obwohl @CarlosAlejo zeigt, dass dies tatsächlich in 37 Bytes ohne Reflektion möglich ist. Sparte weitere 4 Bytes, indem du das linke ¾ zeichnest und das letzte ¼ widerspiegelst. Bearbeiten: Vorherige 33-Byte-Antwort hing
ReflectButterflyOverlap()
davon ab, dass der Überlappungsbereich nicht mit der Reflexion überdruckt wurde. Falls sich dieses Verhalten änderte, suchte ich nach einer Lösung, die sich nicht darauf stützte kreative Verwendung des Druckens eines Arrays. Erläuterung:quelle
‖BO
war nicht in der Sprache, als ich es das letzte Mal benutzt habe - das muss ich mir für die Zukunft merken./// 98 Bytes
Probieren Sie es online! Oder sehen Sie es interaktiv!
quelle
perl slashes.pl -d1 code.txt
. Ich arbeite derzeit an einer Online-Ausführungsumgebung für ///, aber das kann einige Zeit dauern.JavaScript (ES6),
113112 Bytes(Ein Byte dank @Craig Ayre gespeichert.)
quelle
replace(/.(\d+)/g,(a,b)=>a[0].repeat(b))
.replace
Aussage ist sicherlich eine Verbesserung, die ich jetzt in mein Programm aufgenommen habe.a
:([a],b)=>a.repeat(b))
?SOGL V0.12 ,
3231 BytesProbieren Sie es hier aus!
Erläuterung:
Das Viertel:
und der andere Teil:
quelle
.
in der Erklärung gemeint warstring
. Vielleicht benutzen^...'
und"...'
?...
für komprimierte Strings (auch bekannt als Unsinn) gemacht, aber in letzter Zeit habe ich angefangen, ein oder zwei zu machen. UndPython 2 , 115 Bytes, kreativere Idee
Probieren Sie es online!
Python 2 , 102 Bytes, langweilige Idee
Probieren Sie es online!
quelle
Python 2, 124 Bytes
Probieren Sie es online!
quelle
c
, sodass Sie es für 3 Bytes entfernen können. Probieren Sie es online!C (gcc) , 187 Bytes
2 Bytes dank Cody Gray und 3 Bytes dank Keyu Gan!
Probieren Sie es online!
quelle
puts
wäre trivial kürzer, wenn ein abschließender Zeilenumbruch akzeptabel wäre.f()
anstelle von verwendenmain()
. Eine Funktion ist auch akzeptabel.Rust , 181 Bytes
Probieren Sie es online!
Rust , 184 Bytes
Diese Version ist möglicherweise besser zum Golfen geeignet, da das Hinzufügen weiterer
replace
Bytes jeweils weniger kostet. Das erstereplace
ist nicht Teil der Schleife, weil es das Ändern der doppelten Aufgabes
in einString
anstelle von ein zieht&'static str
.Probieren Sie es online!
quelle
C 167 Bytes
Probieren Sie es online!
Hinweis: Viele sichtbare Leerzeichen oben sind eigentlich das Tabulatorzeichen.
Lesbare Version:
Erläuterung:
Das Datenfeld d codiert die Antwort in wörtlichen Einzelzeichen und codierten Wiederholungszeichen. Jedes Zeichen c in dem Datenfeld wird einem Basiszeichen b und einer Anzahl von Wiederholungen zugeordnet. Es wird dann so oft gedruckt.
Zeichen, die nur einzeln verwendet werden (Schrägstriche und Pipe), haben die ASCII-Codes 47, 92 und 124. Zwei davon sind durch 5 mit einem Rest von 2 teilbar
(c%5=2||c>123)
. Für alle drei konnte ich keine kürzere Testbedingung finden.Wiederholte Zeichen (Unterstrich, Bindestrich und Leerzeichen) mit den ASCII-Codes 95, 45 und 32 werden mit einem höheren ASCII-Code codiert - um eins pro Wiederholung erhöht. So ist beispielsweise ein einzelnes Leerzeichen nur ein Leerzeichen, aber mit dem nächsten ASCII-Zeichen, dem Ausrufezeichen, können zwei Leerzeichen codiert werden. Wenn ein codiertes Zeichen ungeeignet wäre, weil es die oben genannte Modulo-Bedingung erfüllt, kann es wie bei # & geteilt werden, um elf Leerzeichen darzustellen. Dieselbe Technik wird verwendet, um Überlappungen zwischen Leerzeichen- und Bindestrichzeichenbereichen zu vermeiden.
Schließlich werden die zehn Zeilenumbrüche als Tabulatoren codiert, um Bytes zu sparen, die durch einen Backslash aus den Zeilenumbrüchen entfernt und zum Drucken inkrementiert worden wären (
++c
).quelle
Kohle ,
4937 BytesProbieren Sie es online!
Endlich konnte ich ein bisschen Golf spielen. Diese Antwort verwendet (im Gegensatz zu allen anderen Ant- worten auf Holzkohle) keine Reflexion, sondern zeichnet die gesamte Kontur in einem Durchgang, wobei die horizontalen Balken am Ende verbleiben.
Link zur ausführlichen Version .
quelle
\
in dem ich gerade einen:UpLeft
Schritt gedruckt habe .)Kaugummi , 40 Bytes
1 Byte durch Entfernen einer nachgestellten Zeile gespart, danke @ovs!
Probieren Sie es online!
quelle
zlib.compress(s.encode(), 9)
gibt 46 Bytes aus und die Antwort scheint zlib zu sein.zopfli --deflate
den DEFLATE-Rohdatenstrom generiert und anschließendxxd
in das xxd-Format konvertiert. Ich glaube,zlib
hinterlässt eine Prüfsumme oder ist aus einem anderen Grund kein roher DEFLATE-Stream.Kohle , 38 Bytes
Probieren Sie es online!
Ich habe Carlos 'Antwort in ihrer ursprünglichen Form als Ausgangspunkt verwendet, aber durch die Verwendung einer Reflexion unter Ausnutzung der horizontalen Symmetrie ein gutes Stück gespart. (Vertikale Symmetrie hat sich nicht gelohnt, da sich die Unterstriche in der falschen Zeile befanden.) Hier können Sie die Entwicklung der Leinwand bei jedem Schritt sehen .
Hier ist die ausführliche Version .
quelle
-d
jeden Schritt anzeigen. (Es tut mir auch leid, dass ich so viel Holzkohle gewechselt habe. Ich bin mir nicht sicher, ob viele der neuen Ideen sehr nützlich sind, insbesondere die Ziegen-ASCII-Kunst, die in die Wolfram-Sprache integriert ist. haha)Python 2,
119117116 BytesProbieren Sie es online!
Ein bisschen gequälte Lauflängenkodierung ...
BEARBEITEN: Sparen Sie 3 Bytes, indem Sie den Satz von Längen ersetzen:
[1,2,4,5,10,11,19,21][ord(x)%8]
mit
int('1245abjl'[ord(x)%8],36)
quelle
r''
when checking the length...C++ 11 -
162159154152150 bytesMSVC:
GCC: (+4 chars)
Input string
i
is coded in char pairs:I think, there's still a lot of room for improvement here.
Edit:
quelle
auto
as a return type, that's a C++14 feature. However, you can fix this and save a byte by making the return typeint
. It doesn't appear that this code works, though; could you test it on Try it online! and see if you can fix it?' '..'X'
for encoding; which saves 40 bytes with a little extra overhead for decoding.Pyth, 74 bytes
Try it online!
quelle
R16K1S60 Assembly,
152144 BytesWrites output to screen peripheral the R16K1S60 in ASCII. Runs on The Powder Toy save
2012356
. (See link in header for info)The byte size of the program is the compiled result (Cells Used * 2), not the assembly.
You know you've done well when the logo takes more space than your bytecode.
Explanation
The assembly code above implements a simple compression algorithm, with the words 0x000C being a newline and 0x0009 being the command to stop execution.
The other words are encoded simply, like this: 0xTTCC
T: Times to repeat the value
C: The ASCII character to print
The ASM uses every register available to it, including some of the less commonly used ones:
The Instruction Pointer, to get a few known values into quick recall to save some bytes (A constant value in an instuction that's not just a register uses an extra byte to store it)
The Stack Pointer is used as 6th general purpose register, because none of the code uses the stack.
Only AX, BX, CX, and DX are actually used for important data. EX and SP are used to store some constants that get frequently used.
It's somewhat simple, and has nil chance of winning, but it was fun to write!
See revision history for the old answer (It's just as large in terms of ASM)
funfact: if this was measured in words (in the case of the R16K1S60,16 bits) it'd be smaller than the pyth answer, at 72 bytes
quelle
Jelly,
504845 bytesTry it online!
quelle
V, 49 bytes
Try it online!
quelle
Mathematica, 163 bytes
quelle
PHP, 86 bytes
Try it online!
PHP, 118 bytes
Try it online!
quelle
Python 2, 171 bytes
Each line is exactly 85 bytes! Hoorah!
quelle
Zsh, 244 bytes
This is specifically written for Zsh, not Bash, as it allows a bit more in terms of weird syntax.
Note: when I tried to run it on tio.run the output is different than on my terminal. The fix to this is replacing
with
which would make it 245 bytes (link).
Edit Seems like I was too eager to hit that post button and I missed some spaces, making my solution a bit less efficient. My new output seems off though, but I think I counted correctly (but it wouldn't change the length anyway).
quelle
Retina, 74 bytes
Try it online!
quelle
Python 2,
159153139 bytesTry it online!
EDIT: Saved 6 bytes by using
%
formatting instead of.format()
.EDIT: Saved another 14 bytes by fixing the output, thanks to musicman523.
quelle
Japt,
797271 bytesTest it
quelle
nH
you can save a few more bytes: ethproductions.github.io/japt/…JavaScript (ES6), 151 bytes
Test Snippet
quelle
Retina, 89 bytes
Try it online!
quelle
Charcoal, 48 bytes
Try it online!
Somewhat different internals than Carlos's, although not visible at first.
quelle
,,,,
11510198 bytesI am absolutely ashamed that this is the best I can produce. >.>
quelle