Die Debian Linux-Distribution (und Debian-basierte Distributionen wie Ubuntu, Kali und andere) verwendet einen Paketmanager namens APT. Um das Programm zu installieren, geben foo
Sie es in ein Terminal ein
sudo apt-get install foo
Ein kleines Osterei von APT ist das folgende
apt-get moo
Was nach der Eingabe die folgende Ausgabe erzeugt
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
..."Have you mooed today?"...
Sie müssen ein Programm schreiben, das diese EXAKTE Ausgabe in so wenigen Bytes wie möglich erzeugt. (einschließlich Leerzeichen und einer neuen Zeile)
Hier ist dieselbe Ausgabe mit \n
hinzugefügt, um Zeilenumbrüche darzustellen, und a *
, um nachgestellte Leerzeichen darzustellen
(__)*\n
(oo)*\n
/------\/*\n
/ | ||***\n
* /\---/\*\n
~~ ~~***\n
..."Have you mooed today?"...\n
Wie in den Kommentaren angefordert, ist hier die MD5-Summe des Mooing.
35aa920972944a9cc26899ba50024115 -
apt-get moo|md5sum
?apt-get moo
Antworten:
Bash, 95 Bytes
Das Obige ist ein reversibler Hexdump. Führen Sie die Datei aus, um sie zu erstellen
Füge den Hexdump ein und drücke Enterdann Ctrl+ D.
Führen Sie zum Ausführen der erstellten Datei aus
Jeder andere Dateiname reicht aus.
Ich habe zopfli als Kompressor gewählt, da es mit dem Coreutils-Programm zcat kompatibel ist und eine bessere Komprimierung erzielt als gzip, bzip2 und xz.
zcat<<''
liest die folgenden Zeilen (bis EOF) und gibt sie als Eingabe anzcat
.Beachten Sie, dass zcat eine Warnung druckt (da ich die Prüfsumme der komprimierten Datei entfernt habe), ebenso wie bash (da das HEREDOC nicht durch eine leere Zeile abgeschlossen wird). Diese Warnungen werden in STDERR (unterdrückt von
2>&-
) gedruckt , was standardmäßig pro Konsens auf Meta zulässig ist .quelle
CJam, 96
Dies verwendet viele böse Bytes, daher hier ein Hex-Dump davon:
Sie können die Datei mit dem Java-Interpreter ausführen. Möglicherweise muss die ISO-8859-1-Codierung verwendet werden, z.
java -Dfile.encoding=ISO-8859-1 …
Probieren Sie es online aus
Äquivalente (und viel längere) ASCII-Version:
Probieren Sie es online aus
Erläuterung:
Es gibt 7 Zeichen mit Wiederholungen :
_o-|~.
. Jeder von ihnen kann als eine Zahl n von 0 bis 6 codiert werden. Für jede sich wiederholende Sequenz codiere ich sowohl den Zeichenindex (n) als auch die Anzahl der Wiederholungen (k) in einem einzelnen Byte :2 * (k * 7 + n)
, das als Zeichen damit geschrieben ist Code. Und ich codiere alle einzelnen Zeichen als2 * c + 1
, wobei c der ASCII-Code ist. Alles geht in die anfängliche Zeichenfolge, und der Rest des Programms dekodiert sie:Alte Version (109):
Probieren Sie es online aus
quelle
Pyth, 100
Probieren Sie es online aus: Demonstration
r"string"9
run-length-decodiert den String.bearbeiten:
Hier ist eine 97-Zeichen-Lösung: Demonstration . Sehr wahrscheinlich sind dies auch 97 Bytes (in ISO-8859-1). Aber zu müde, um die Bytes aufzuschreiben und eine Erklärung abzugeben. Morgen Abend, denke ich.
quelle
GolfScript (107 Bytes)
Dies ist eine sehr einfache Codierung: Zeilenumbrüche werden durch ersetzt
^
und Leerzeichen werden in Lauflängencodierung ausgeführt. Das Ergebnis enthält einige nicht druckbare Zeichen, daher präsentiere ich es hier alsxxd
Ausgabe:Online-Demo
Beachten Sie, dass dies ein Zeichen kürzer als der entsprechende CJam-Code ist. Der Kompromiss wird
'
als Trennzeichen für die Hauptzeichenfolge verwendet (Speichern von zwei\
Sekunden, um der Zeichenfolge zu entkommen"
), Speichern voni
, um Zeichenwerte in Ganzzahlen in der Decodierungsschleife umzuwandeln, und Abrufen einer freien nachgestellten Zeilenumbruch; im Vergleich zu Zeichenliteralen als Ersatz für Zeichenfolgenliterale mit einem Zeichen.Da diese Frage kurz mit printable-ascii markiert wurde , habe ich auch eine Version mit nur (108) druckbaren Zeichen erstellt:
Anstelle der Codierung der Lauflängen der Räume als Zeichen
^A
zu^R
(und Codieren^J
wie^
Um Kollisionen zu vermeiden), läßt es newlines unberührt und codiert die Lauflängen , wieI
zumY
.Mein universelles GolfScript Kolmogorov-Programm erzeugt übrigens ein 120-Byte-Programm.
quelle
Lua,
186178 Bytes8 Bytes dank eines Vorschlags von @DJ McMayhem gespart
Ungolfed:
quelle
a=repeat(" ",17)
> <> 217 Bytes
Leider ist das eine ziemlich langweilige Antwort. Zunächst wird eine Zeichenfolge vorgelesen, die die gesamte Kuh herauszieht, wobei neue Zeilen durch Hinzufügen eines Werts von 10 zum Stapel (a) erstellt werden. Es geht dann in eine Schleife, die nur die Kuh herauszieht.
Ich habe ursprünglich eine Schleife erstellt, um eine Reihe von Leerzeichen hinzuzufügen, aber es war tatsächlich byteweise teurer, als nur Leerzeichen einzufügen.
EDIT: Ich habe vergessen, dass Fisch als "> <>" geschrieben ist.
quelle
PowerShell, 144 Byte
Der obige Code funktioniert ordnungsgemäß in Umgebungen, in denen Zeilenumbrüche im Unix-Stil (
\n
) gedruckt werden . Es erzeugt die richtige Ausgabe mit z. B. Pash unter Linux.Für PowerShell ist es mathematisch
$a
optimal, 8 Leerzeichen für die Variable zu haben, da weniger zu viele zusätzliche Leerzeichen zwischen der Variablen und der Kuh bedeutet, um sich zu$b
lohnen, und mehr bedeutet, dass wir die ersten beiden Zeilen für die Variable nicht verdoppeln können Kopf.quelle
\r
ist ein Wagenrücklauf,\n
ist ein Zeilenvorschub.\r\n
Bildet zusammen eine neue Zeile unter Windows. 2. PowerShell ist nicht nur Windows. Ich habe Ihren Code mit Pash (einer Open-Source-Implementierung von Windows PowerShell für Mono) getestet und die Ausgabe hat den richtigen MD5-Hash. 3. Aus diesem Grund habe ich mir erlaubt, Ihren Beitrag zu entfernen. Wenn Sie damit nicht einverstanden sind, wiederholen Sie das Wiki.\r\n
und bewusst\n
, aber wie gesagt, ich könnte das MD5 unter Windows ohne etwas Ungeheuerliches nicht richtig machen. Vielen Dank für diese Bearbeitung. Zuerst habe ich auch von Pash gehört, also danke auch dafür. Ich frage mich, wie kompliziert das wäre, unter Cygwin zu bauen ... ;-)Molekül , 145 Bytes
Mein erster Versuch, ASCII-Grafik zu komprimieren: P.
quelle