Das Ziel dieser Herausforderung ist es, ein Programm zu schreiben, bei dem die Länge der folgenden drei genau gleich ist:
- die Länge des Quellcodes
- Die Länge der Ausgabe, die als Standardausgabe ausgegeben wird
- Die Länge der Compiler-Warnungen, die mit dem (nicht modifizierten) Compiler Ihrer Wahl generiert werden
Der Gewinner ist der kürzeste Code, der alle drei Kriterien erfüllt, und muss mindestens 1 Zeichen lang sein.
Wenn die Ausgabe weniger als drei verschiedene Zeichen enthält, wird die Länge für jedes Zeichen um 5 Punkte erhöht (also +10, wenn es sich nur um einen einzelnen Typ handelt, +5 für zwei).
(Zeilenumbrüche zählen entweder als 1 oder 2 Zeichen, müssen jedoch in allen drei Kriterien konsistent sein. Führende und nachfolgende Leerzeichen werden in allen Zeilen in allen drei Kriterien ignoriert.)
Bei gleicher Punktzahl gewinnt derjenige, der das interessanteste Ergebnis (anstelle von Müll) ausgibt.
Antworten:
Bash, 23 Zeichen
Error:
Quelle:
Ausgabe:
Brainf * ck, 32 Zeichen
Dieser Code wird ca. 3 Sekunden lang ausgeführt und stoppt und zeigt den folgenden Fehler und die folgende Ausgabe an.
Error:
Quelle:
Ausgabe: (Hexdump)
C, 35 Zeichen
Warnung:
Quelle und Ausgabe:
PHP, 50 Zeichen
Warnung:
Quelle und Ausgabe:
quelle
C - 48 Zeichen
Hinweis: Beinhaltet eine abschließende (Unix-artige) Newline.
Ausgabe von
gcc a.c
liest:Bei der Ausgabe von
a.out
handelt es sich meistens um nicht druckbare Zeichen. Nach dem Piping durch hexdump sieht es also so aus:quelle
main(i){i='\z';while(i-->74)putchar(i);}
- aber das Reduzieren der Programmgröße ist eigentlich kontraproduktiv.JavaScript, 63
66Die Ausgabe ist:
In Chrome ist der Fehler:
quelle
Visual Basic .NET, 185
Gee,
vbc
ist mit seinen Zusammenstellungswarnungen ziemlich wortreich. Wie auch immer, der Code lautet:(Beachten Sie, dass es sich um Tabulatoren und nicht um Leerzeichen handeln soll.)
Die Ausgabe lautet wie folgt:
Und die Compiler-Warnung lautet:
(Dieses Mal sind es vier Leerzeichen, keine Tabulatoren.)
quelle
Zsh , 20 Bytes
Auf das Problem, mit dem wir hier konfrontiert sind, wird in einem Kommentar oben hingewiesen: Zsh gibt vor jedem Fehler den Programmnamen zusätzlich zur Zeilennummer aus. Die Lösung hier verwendet einen Dateinamen mit einem Zeichen, um dies zu missbrauchen. Ich habe es in ein Hilfsskript verpackt, um genau zu zeigen, was es druckt, und es
wc -c
für stderr, stdout und die Quelldatei verwendet.Ausgabe:
569Xcatcatcatcatcat
gefolgt von einem ZeilenumbruchFehler:
s:[:2: ']' expected
gefolgt von einem ZeilenumbruchBEARBEITEN: Alternative 20-Byte-Lösung ohne Dateieinschränkung:
Probieren Sie es online!
Zsh ,
zsh -x
10 Bytes-x
flag aktiviert xtrace. Dies erfordert wiederum einen Dateinamen mit einem Zeichen. Probieren Sie es online!Zsh
zsh -JNTwEDY
, 12 BytesKürzeste
-flag
Antwort ohne Dateinamenanforderung. Setzt mehr Flags und$-
druckt sie alle. Probieren Sie es online!quelle
JavaScript (Firefox 54), 34 Byte
Ausgänge:
Und es sendet diese Warnung an die Browserkonsole:
Es sieht aus wie dies in meiner Version von Firefox Developer Edition (54.0a2). Möglicherweise funktioniert es auch in anderen Firefox-Versionen.
quelle
Ruby, 48 Zeichen
Ausgänge
Warnt
(Die Datei ist r.rb. Ich habe den Pfad entfernt. Wenn Sie sie von irb ausführen, erhalten Sie (irb): 1: Warnung ...)
In Ruby gibt es die warn-Methode, die jedoch nur ihre Argumente an $ stderr ausgibt, sodass sie weniger wie eine Warnung aussieht.
quelle
Python, 57 Bytes
Andere Dolmetscher zeigen die Warnung möglicherweise anders an. Dies wurde nur für TIO getestet.
Probieren Sie es online aus
Ausgabe
Warnung
Beachten Sie, dass die führenden Leerzeichen nicht für die Byteanzahl gezählt werden. Wenn die führenden Leerzeichen nicht ignoriert würden, könnte dies in 51 Bytes erfolgen.
quelle
Javascript (ES6),
32-30Bytesdruckt
in Chrome und wirft dann
Meine ursprüngliche 32-Byte-Lösung:
zuerst druckt
Und wirft den Fehler
quelle
VBA, 39 Bytes
Ich bin nicht sicher, ob dies aufgrund der Compiler-Einschränkung geeignet ist, aber:
Eingabe: (im direkten Fenster)
* Die Ausgabe enthält nicht druckbare Zeichen, die in diesem Fenster nicht gut wiedergegeben werden.
quelle
Perl 6 , 10 Bytes
Probieren Sie es online!
Drucke
1000000000
auf STDOUT undBool::True
zu STDERR. Beide erzeugen einen abschließenden Zeilenumbruch, der abschließende Leerraum wird bei dieser Abfrage jedoch ignoriert.dd
ist eine Rakudo-spezifische Debugging-Funktionquelle