Herausforderung
Schreiben Sie das kürzeste Programm, das beim Kompilieren oder Ausführen eine schwerwiegende Fehlermeldung erzeugt, die kleiner als das Programm selbst ist. Die Fehlermeldung wird möglicherweise nicht vom Programm selbst generiert, z. B. von Python's raise
. Eine gültige Antwort muss sowohl den Code als auch die Fehlermeldung enthalten. Kürzeste gültige Antwort gewinnt.
Keine Fehlermeldung zählt nicht als Fehlermeldung.
Beispiel (Lua)
Code (46 Byte):
[
--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Fehler (45 Bytes):
[string "[..."]:1: unexpected symbol near '['
code-golf
error-message
user72528
quelle
quelle
__main__.CodeException: Raised an &rror.
" mein Fehler oder ist dies: "Raised an &rror.
"Antworten:
ed , 3 bytes
Hinweis: Die meisten Antworten hier ignorieren die als Teil der Fehlermeldung in ihrer Anzahl ausgedruckte nachgestellte Newline. Aber ich sehe in der Frage nichts, was das Ignorieren rechtfertigen könnte, und der Autor sagte, dass die neue Zeile eingefügt werden sollte . Wenn sich die Frage nicht ändert, werde ich sie einbeziehen.
Code (mit nachfolgender Newline):
Fehler (mit nachfolgendem Zeilenumbruch):
quelle
C (modernes Linux), 19 Bytes
Hätte meinen berühmten Segfault gemacht, aber total menschlich hat er ihn gestohlen.
Ausgabe (18 Bytes):
quelle
main(){main();}
)?main(){main();}
ist nicht zu seg-Fehler garantiert.Python 2, 35 Bytes
Gibt Fehler:
quelle
JavaScript (Firefox), 31 Byte
Löst diesen Fehler aus:
Getestet in der Konsole von Firefox 54.0.1 unter Windows 7.
quelle
Python 2 ,
8779 Bytes-8 Bytes dank Zacharý und Erik the Outgolfer.
Probieren Sie es online!
Fehlermeldung, 78 Bytes:
Angenommen, der Code wird in einer Datei mit dem Namen gespeichert
a
.Dies ist eigentlich ein schönes kleines Osterei in Python. : D
quelle
\s\sFile "<stdin>", line 1\nSyntaxError: not a chance
nur 50 Bytes [\s
ist ein Leerzeichen und\n
ein Zeilenumbruch], sodass Sie ein 51-Byte-Programm erhalten können.Haskell, 13 Bytes
Speichern Sie den Namen
t.hs
oder einen anderen Namen mit einem Zeichen, kompilieren Sie ihn mitghc
und führen Sie ihn aus. Fehlermeldung (mit nachfolgender Newline):quelle
Taxi ,
3821 BytesProduziert:
Probieren Sie es online!
-17 Bytes dank Engineer Toast
Versucht zu "abc" zu wechseln, was nicht existiert. Sie würden
[abc]
irgendwo haben.quelle
Switch to plan "abc".
Produzieren bis zu 21 Bytes erreichenerror: no such label
. Dies könnte eine der wenigen Code-Golf- Herausforderungen sein, bei denen Taxi einige traditionelle Sprachen schlägt.> <> 26 Bytes
Probieren Sie es online!
Jede Fehlermeldung in "Fisch" ist "Fisch".
something smells fishy...
Dadurch wird der Zeiger nur so oft nach rechts bewegt, bis er länger ist, und es wird versucht, den oberen Teil des Stapels zu duplizieren, der zu diesem Zeitpunkt leer ist.quelle
JavaScript (Firefox), 21 Byte
Fehler (20 Bytes) :
TypeError: a is null
quelle
System V-Shell, 25 Byte
Fehlermeldung (23 Bytes):
"Keine Schreibmaschine" oder
ENOTTY
ist einerrno.h
auf Unix-Systemen definierter Fehlercode . Dies wird verwendet, um anzuzeigen, dass in einem ioctl-Systemaufruf eine ungültige ioctl-Nummer (Eingabe- / Ausgabesteuerungsnummer) angegeben wurde. Auf meinem System in/usr/include/asm-generic/errno-base.h
kann ich diese Zeile finden:In Version 6 UNIX und älter war die E / A auf seriell angeschlossene Endgeräte beschränkt, z. B. auf einen Teletyp (TTY). Diese wurden normalerweise über die Systemaufrufe
gtty
undstty
verwaltet. Wenn man versuchen sollte, einen dieser Systemaufrufe auf einem Nicht-Endgerät zu verwenden,ENOTTY
wurde generiert.Heutzutage besteht natürlich keine Notwendigkeit, einen Fernschreiber zu verwenden. Wann
gtty
und durchstty
welche ersetzt wurdeioctl
,ENOTTY
wurde beibehalten. Einige Systeme zeigen diese Meldung weiterhin an. aber die meisten sagen stattdessen "unangemessenes ioctl für Gerät".quelle
QBasic, 11 Bytes
Es gibt zwei Lösungen mit 11 Bytes in QBasic, von denen eine möglicherweise weiter verbessert wird. Die kürzeste Fehlermeldung, die QBasic hat
overflow
, kann folgendermaßen ausgelöst werden:Dies wird ausgelöst,
overflow
weil das Maximum für eine Ganzzahl (i%
) ist32676
.32677
Ohne das automatische Casting von QBasic hätte ich nicht lange Golf spielen können ...Ein weiterer Fehler bei 11 Bytes wäre
out of data
. QBasic verfügt überDATA
Anweisungen, die Daten im Programm speichern, auf die später vonREAD
Anweisungen zugegriffen werden kann . Das Ausgeben von mehrREAD
s alsDATA
s verursacht den Fehler:Beachten Sie, dass die Anweisung mit einem Kommentar aufgefüllt ist, um sie an die Länge der Fehlermeldung anzupassen. Ja, ich habe eine Fehlermeldung mit einem kürzeren Programm und ein Programm mit einer kürzeren Fehlermeldung ...
quelle
C (Modern Linux), 19 Bytes
Ich schlug dies im Chat vor, aber niemand ergriff die Gelegenheit. : P Dank an MD XFs witzige Antwort .
Fehlermeldung, 18 Bytes
quelle
W_EXITCODE(0, 11) == 11
) und Exit-Code 139 (W_EXITCODE(139, 9) == 139 << 8
). Muscheln setzen$?
nicht-surjektiv aufWIFEXITED(wstatus) ? WEXITSTATUS(wstatus) : WTERMSIG(wstatus) + 128
, aber die meisten Sprachen machen den Unterschied deutlich.WIFEXITED(wstatus)
Entspricht dasDIVORCE(alimony)
zufällig?Javascript (V8), 24 Byte
Fehler, 23 Bytes:
Getestet auf Nodejs v6.11.0 und Google Chrome v59.0.3071.115 .
Probieren Sie es online!
Beachten Sie, dass TIO die Fehlermeldung erweitert.
quelle
TrumpScript , 30 Bytes
Fehlermeldung:
quelle
PowerShell ,
215189 ByteProbieren Sie es online!
PowerShell hat also ... ausführliche ... Fehlermeldungen. Darüber hinaus handelt es sich bei den meisten Nicht-Syntax-Fehlermeldungen um Laufzeit-Ausnahmen, was bedeutet, dass sie nicht schwerwiegend sind, wodurch sich das Problem darauf reduziert, dass ein kurzer Analysefehler gefunden werden muss.
Ich denke, dies ist einer der kürzesten, wenn nicht der kürzeste.@TessellatingHeckler hat gezeigt, dass dies der kürzeste Parsing-Fehler ist, und er wiegt188
nur für die Fehlermeldung immer noch Byte. Wir müssen also im Grunde genug1
s anhängen , um189
Bytes von "Code" zu erreichen .Wenn Sie dies beispielsweise lokal
c:\a.ps1
ausführen, wird die Anzahl der Bytes um eine Handvoll verringert, da es sich nur um einen kürzeren Dateipfad handelt, der jedoch in TIO nicht verfügbar ist.Erzeugt Fehler:
quelle
[]
was wie ein kürzerer Fehler aussiehtMissing type name after '['
und je nachdem, wie Sie genau zählen, könnte es ungefähr 190 sein - tio.run/##K8gvTy0qzkjNyfn/PzqWy3Dogv//AQ (entnommen aus den Parser-Zeichenfolgen hier , die für mich wie der kürzeste Parser-Fehler aussehen([xml](gc .\ParserStrings.resx)).root.data.value | sort { $_.length } -Desc
).Commodore 64 Basic, 15 Byte
Produziert
(Beachten Sie zwei Leerzeichen in der Fehlermeldung, wo das Programm drei hat)
?SYNTAX ERROR
Dies ist?VERIFY ERROR
die drittkürzeste Fehlermeldung, die C64 Basic erzeugen kann, und die kürzeste, die zuverlässig durch Code ausgelöst werden kann (die kürzeste MeldungBREAK IN 1
erfordert Benutzerinteraktion, während?LOAD ERROR
ein defektes Band oder eine defekte Diskette?VERIFY ERROR
erforderlich ist und das Vorhandensein von erforderlich ist) eine Diskette oder ein Band mit einer Datei, die nicht mit dem Programm im RAM übereinstimmt).quelle
R ,
2928 Bytes-1 Byte dank JarkoDubbeldam
Löst den Fehler aus,
Error: object 'a' not found
der 27 Byte beträgt.Probieren Sie es online!
quelle
a #abcdefghijklmnopqrstuvwxy
Der FehlerError: object 'a' not found
ist ein Byte kürzer.Ruby (
3332 Bytes)32 Bytes
Löst den Fehler aus (vorausgesetzt, in einer Datei mit dem Namen "a"):
31 Bytes
Edit : Rasiert ein Byte aus mit
&
anstelle von<<
Dank an Eric , der auch mit einer noch kürzeren Ruby-Lösung kam: einbrachte http://codegolf.stackexchange.com/a/135087/65905quelle
&
nicht. Ordentlich! Auch gut mit dem Hex Flucht zu finden. Ich hatte Mühe, eine kürzere und nicht stapelbare Fehlermeldung zu finden, die sich von einem Syntaxfehler unterscheidet.Brainf ** k, 17 Bytes, dieser Interpreter
Brainf ** k ist eine so einfache Sprache, dass fast jeder Dolmetscher eine andere Fehlermeldung hat. Diese Option wird verwendet,
Memory Error: -1
wenn der Zeiger zu stark nach links bewegt wird und Sie einen anderen Vorgang versuchenquelle
Common Lisp , 20 Bytes
Probieren Sie es online!
Fehlermeldung
quelle
TryAPL, 11 Bytes
Code (11):
Fehler (10):
quelle
Javascript (Firefox),
2927 Byteswirft
RangeError: invalid date
das ist 24 Bytes. Getestet unter Firefox 54.0.1 unter Windows 10.quelle
ZX Spectrum Basic, 9 Byte
produziert:
Erläuterung:
Ich zähle (ausnahmsweise) die ASCII-Darstellung des Programms für Längenzwecke, einschließlich des Zeilenendes (das ist nicht wirklich wichtig, da wir immer ein kürzeres Programm mit Leerzeichen füllen könnten).
Normalerweise sind ZX Spectrum-Fehlermeldungen länger und hilfreicher - die ROM-Routine bei 0x0008 erwartet einen Fehlercode nach dem Aufruf des Maschinencodes an
RST 8
. Und ruft ein zufälliges (deterministisches) Byte aus dem ROM ab, das diese unsinnige Fehlermeldung erzeugtM
.5
ist die Fehlernummer,,
wird von der Fehlerdruckroutine hinzugefügt und0:1
ist die Zeile: Befehlsposition des Fehlers.quelle
Aubergine , 53 Bytes
Ausgänge
SyntaxError: Invalid instruction (0) at character 0.
Probieren Sie es online!
quelle
Perl 5 , 5 Bytes
Gibt eine neue Zeile für ein Byte aus.
Probieren Sie es online!
quelle
Perl 5 , 11 Bytes
Da mir nicht klar ist, ob meine andere Antwort den Herausforderungsregeln entspricht, ist hier eine andere Alternative.
Fehlerausgabe:
Mit einer abschließenden Newline für 6 Bytes.
Probieren Sie es online!
Aus irgendeinem Grund enthält die interne Funktion des Perl-Interpreters
Perl_mess_sv
:Dabei
CopLINE(cop)
wird die Zeilennummer des aktuellen Codekontexts abgerufen. Wenn diese Zeilennummer also zu Null ausgewertet wird, überspringt Perl das Hinzufügen des Üblichen" at <filename> line <n>"
zur Fehlermeldung.quelle
die
ist für das Programm zu beenden .raise
?ArnoldC , 150 Bytes
Probieren Sie es online!
Fehler ist 94 Bytes (einschließlich nachfolgender Newline):
Erhalten, weil ich das für lustiger halte - Spoiler: Es waren diese blöden Teenager-Scherze.
ArnoldC , 280 Bytes
Pseudocode:
Probieren Sie es online!
Erzeugt einen Fehler "keine Eingabe". (Fast alle anderen Fehler in ArnoldC enthalten ein großes Stück Kesselschild):
279 Bytes (einschließlich nachfolgender Newline):
quelle
TI-Basic, 9 Bytes
Shortest Fehlermeldungen sind jeweils 8 Bytes:
ERR:DATE
,ERR:MODE
,ERR:STAT
, undERR:ZOOM
. Ich habe nicht darüber nachgedacht,ERR:DATE
weil das bei Modellen ohne interne Uhr nicht funktioniert. Ich habe mich auch nicht dafür entschiedenERR:ZOOM
weil es zu schwer zu lösen schien.Programm (9 Bytes):
Fehlermeldung:
ERR:MODE
(8 Bytes)Programm (9 Bytes):
Fehlermeldung:
ERR:STAT
(8 Bytes)quelle
Ruby, 25 Bytes
Das war eine lustige Übung, danke! Es gibt wahrscheinlich eine Möglichkeit, mit einem SegFault eine kürzere Fehlermeldung zu erhalten, aber ich konnte keine finden.
Fehlermeldung:
24 Bytes, einschließlich einer nachgestellten Newline.
Probieren Sie es online!
Ruby, 26 Bytes
Hier ist meine vorherige Antwort:
Fehlermeldung:
25 Bytes, einschließlich einer nachgestellten Newline.
quelle
C ++ (auf MacOS High Sierra Beta), 23 Zeichen
Ausgabe: (22 Zeichen)
Ich erinnere mich nicht, ob frühere Versionen von macOS die traditionellere
Segmentation fault (core dumped)
Antwort liefern , aber es ist ziemlich trivial, Leerzeichen zum Code hinzuzufügen, um das auszugleichen.quelle