Ihre Herausforderung: Schreiben Sie ein "Programm" für eine Sprache Ihrer Wahl, das bewirkt, dass der Compiler / Interpreter / die Laufzeit beim Kompilieren / Ausführen Ihres Programms eine Fehlerausgabe erzeugt , die mit dem Quellcode Ihres Programms identisch ist.
Regeln:
- Ihr Programm ist möglicherweise spezifisch für eine bestimmte Version oder Implementierung der Compiler- / Interpreter- / Laufzeitumgebung Ihrer Sprache. Wenn ja, geben Sie bitte die Einzelheiten an.
- Es sind nur Standardoptionen für Compiler / Interpreter / Laufzeit zulässig. Sie können Ihrem Compiler kein seltsames Flag übergeben, um ein bestimmtes Ergebnis zu erhalten.
- Das Programm muss nicht syntaktisch oder semantisch gültig sein, aber ich kann der besten syntaktisch gültigen Übermittlung eine Belohnung geben.
- Das Programm darf keine eigene Ausgabe erzeugen (zB durch Aufruf einer Druck- oder Ausgabefunktion). Alle Ausgaben, die beim Versuch generiert werden, das Programm zu kompilieren / auszuführen, müssen vom Compiler / Interpreter / der Laufzeit stammen.
- Die vollständige Ausgabe des Compilers / Interpreters / der Laufzeit muss exakt mit Ihrem Programmquellcode identisch sein.
- Der Compiler / Interpreter / die Laufzeit muss mindestens eine Fehlermeldung erzeugen, wenn er mit Ihrem Programm aufgerufen wird.
Dies ist ein Beliebtheitswettbewerb . Die kreativste Antwort, bestimmt durch die positiven Stimmen, gewinnt. Wenn Sie ein gutes Argument für die Verwendung einer Standardlücke angeben können, können Sie dies tun.
popularity-contest
quine
error-message
nneonneo
quelle
quelle
Error: Could not find or load main class Q
Antworten:
Ed (1 Byte)
Alle anderen bisherigen Lösungen sind langwierig und hässlich. Ich nehme an, das liegt an der Natur der meisten Fehlermeldungen. Aber eine gute Fehlermeldung ist in ihrer Einfachheit elegant. Dafür suchen Sie nicht weiter als ed.
Speichern Sie dies in einer Datei mit dem Namen
edscript
und führen Sie sie mited < edscript
oder aused<<<?
. Das Ergebnis:Das Fragezeichen wird in stderr geschrieben, und ed gibt 1 zurück. Dies ist also tatsächlich eine Fehlermeldung. Ich frage mich, warum ed nicht sehr beliebt ist?
Falsch (0 Bytes)
Laufen Sie mit
false filename
. Es schreibt den Quellcode des Programms (dh nichts) in stderr und gibt 1 zurück. Natürlich ist es fraglich, false als Programmiersprache zu bezeichnen, und das Null-Byte-Quine ist unoriginal, aber ich dachte, ich könnte es genauso gut hinzufügen. Es gibt wahrscheinlich einen Interpreter für eine Sprache, der keine Fehlermeldungen ausgibt und false ersetzen könnte.Jetzt wünschte ich, das wäre Codegolf.
quelle
Windows-Eingabeaufforderung
quelle
|
.CoffeeScript, syntaktisch gültig
Wie auf ihrer Website mit Chrome oder Firefox getestet .
Sie können
defined
alles ersetzen, was keine eingebaute Variable ist, aber ich dachte, diese Version hat Spaß gemacht.undefined is not defined
Insbesondere funktioniert das leider nicht als Quine.In CoffeeScript ist dies nicht einmal ein Syntaxfehler, da es kompiliert. Dies ist technisch gesehen ein Laufzeitfehler in JavaScript, wenn auch ein langweiliger. CoffeeScript ist wahrscheinlich ein Kandidat, der einige interessantere Laufzeitfehlerquines erzeugt, da viele lustige Sätze gültigen Code enthalten. ZB übersetzt das obige Beispiel nach
quelle
defined
ist vondefined
itiondefined
. Was ... wie ...?Undefined is not defined
(mit einem GroßbuchstabenU
) scheint zu funktionieren lolPython
Spyder
Nun, eine ziemlich triviale Lösung für die Spyder-IDE ist es, a zu erhöhen
SyntaxError
.Code und identische Ausgabe:
(Python 2.7.8 mit Spyder 2.2.5)
Terminal
Eine alternative Lösung für Python begann mit Befehlszeilenproblemen mit einem unerwarteten Einzug.
Befehl:
Code und identische Ausgabe:
ideone.com
Auf ideone.com könnte eine Lösung wie folgt aussehen. (Versuch es!)
Code und identische Ausgabe:
(Dies ist für Python 2. Ein Beispiel für Python 3 ist trivial, aber mit 15 Zeilen "Code" ziemlich lang.)
Allgemeiner Ansatz:
Wie erstelle ich meine eigene Lösung in 2 Minuten?
Ich wette, ein solches Verfahren wird in den meisten Fällen ziemlich schnell beendet!
quelle
SyntaxError: invalid syntax
produziert das gleiche auch :)> <> - 25 Bytes
In Fish gibt jeder fehlerhafte Befehl den Fehler aus: "Etwas riecht nach Fisch ...". Da s kein gültiger Befehl ist, tritt sofort ein Fehler auf.
quelle
something smells fishy...
, aber es istSomething smells fishy...
auf dem Online-Interpreter. Es hängt vom Dolmetscher ab.Windows .EXE, 248 Bytes
Nicht wirklich. Speichern unter
quine.txt
, benennen Sie anschließend aufquine.exe
(oder laden Sie es hier ):quelle
Leerzeichen
Zuerst dachte ich, das ist eindeutig unmöglich. Aber eigentlich ist es auch trivial. -.-
Versuch es.
Ja, mein erstes Whitespace-Programm! ;)
quelle
Hähnchen
quelle
JavaScript
Da unterschiedliche Browser unterschiedliche JavaScript-Compiler verwenden, erzeugen sie unterschiedliche Meldungen. Dies sind jedoch eher triviale Lösungen.
V8 (Chrome 36 / Node.js)
SpiderMonkey (Firefox 31)
Chakra (Internet Explorer 11)
quelle
jsc
:Exception: SyntaxError: Unexpected identifier 'identifier'
: DCommodore 64 Basic
Wenn auf dem Emulator Ihrer Wahl (oder einem tatsächlichen Commodore 64) ausgeführt, produziert
Dies ist in der Tat ein syntaktisch gültiges einzeiliges Programm. Das Fragezeichen ist eine Abkürzung für
PRINT
undSYNTAX
undERROR
ist ein gültiger Variablenname. Der Fehler tritt auf, weil der Parser durch die TeilzeichenfolgeOR
in verwirrt wirdERROR
.quelle
Microsoft Excel
Formel:
#DIV/0!
Fehlermeldung:
#DIV/0!
Um eine Formel ohne Gleichheitszeichen einzugeben, wechseln Sie zu Excel-Optionen / Erweitert / Lotus-Kompatibilitätseinstellungen und aktivieren Sie die Übergangsformeleingabe.
quelle
#REF!
Bash (32)
Speichern als Datei mit dem Namen
x
:Wenn ausgeführt:
quelle
Java 8-Kompilierungsfehler quine (12203 Byte)
Unter Windows + MingW mit Java 1.8.0_11 JDK generiert, mit diesem Befehl:
Vielleicht nicht die kürzeste, vielleicht auch nicht die längste, eher ein Proof of Concept. Funktioniert, da bei der Fehlerausgabe höchstens 100 Fehler angezeigt werden.
quelle
ArnoldC
Fügen Sie den Code in diesen Compiler ein .
quelle
IT'S SHOWTIME
ist, dass in der Tat in der ersten ZeileTrumpScript - PPCG wieder großartig machen ( TrumpScript )
Wenn Sie versuchen, diese Sprache auf einem Windows-PC auszuführen, wird immer Folgendes ausgegeben:
Wenn Sie dieses Programm ausführen:
Es wird nicht einmal analysiert, da die Betriebssystemprüfung fehlschlägt und Sie die Fehlermeldung erhalten. Beispiele können auch für Mac gegeben werden, wenn jemand sie möchte, haha. Gott, ich wollte das jetzt schon eine Weile in PPCG verwenden, gut, dass ich endlich dazu komme.
Vollständige Liste der Fehler, die mithilfe von Umgebungsspezifikationen ausgelöst werden können:
https://github.com/samshadwell/TrumpScript/blob/master/src/trumpscript/utils.py
Bonus Antwort: ArnoldC ( ArnoldC )
ArnoldC erfordert die Root-Deklaration von
IT'S SHOWTIME
, was bedeutetmain()
:Ergibt die einzige Fehlermeldung in ArnoldC ...
Welches ist eigentlich ... urkomisch. Sie müssen es ohne Stack-Traces nonverbose ausführen.
quelle
Z-Maschineninterpreter
Testen Sie gegen diesen beliebten Interpreter . Es gibt auch eine Art meist harmloses Spiel, das dort gehostet wird.
quelle
Julia 0.2.0
Ein anderer Syntaxfehler wurde iterativ gefunden, bis ein fester Punkt erreicht wurde:
quelle
Mathematica
A
.
in Mathematica bedeutet entweder ein Dezimalpunkt oder eine FunktionDot
. In diesem Fall steht das.
am Ende eines Ausdrucks und kann nicht interpretiert werden.quelle
C
Ich habe die Methode angewendet, die Fehlermeldungen wiederholt in die Quelle zu kopieren. Es konvergierte in 2 Zyklen. Kompiliert unter OSX 10.9 mit 'cc -c error.c'.
Hinweis: Dies ist weniger eine Antwort als vielmehr eine Methode, um eine Antwort zu erhalten. Das Ergebnis kann sich je nach Betriebssystem oder verwendeter Version von cc ändern.
Die genaue Methode, um das Ergebnis zu erhalten, besteht darin, die Anweisungen auszuführen
wiederholt, bis sich der Ausgang nicht mehr ändert.
quelle
cc -c error.c 2>out
und dann ausführenmv out error.c
. Und mit der Version von cc, die ich heute habe, dauert es noch ein paar Iterationen.cc
. Andernfalls ist es ungültig und muss gemäß den Community-Richtlinien gelöscht werden.C ++ (g ++)
Die Datei muss gespeichert werden als
1.pas
.quelle
INTERCALL , 90 Bytes
Schließt eine nachfolgende Zeile am Ende ein. Beachten Sie, dass dies nicht STDERR ist, aber von vielen als Fehlerausgabe angesehen wurde. Deshalb habe ich es hier veröffentlicht.
Dies ist der "obligatorische Header":
quelle
GHCi (ein Haskell-Interpreter / eine Shell)
Verwendungszweck:
Schreiben Sie den Code in eine Datei mit dem Namen Code und laden Sie sie mit GHCi.
Eine nette Tatsache ist, dass, wenn die Wörter tatsächliche Bezeichner wären, dies ein legaler Ausdruck wäre (solange es eine Typüberprüfung wäre). Dies ist im Wesentlichen auf die Tatsache zurückzuführen, dass
:
es sich um einen eingebauten Operator handelt,.
der für modulqualifizierte Namen verwendet wird und Leerzeichen zur Bezeichnung der Funktionsanwendung verwendet werden.quelle
.
ist kein Operator hier. Es ist Teil eines qualifizierten Namens. Für welche Version von GHCi ist das gedacht?Ruby 2 unter Windows
Code:
Der Code wurde gefunden, indem der Prozess immer wieder getestet und wiederholt wurde, bis ein Fixpunkt erreicht wurde. Der Code muss sich in der Datei befinden
"error.rb"
.Demo:
quelle
Applescript (im Skripteditor)
quelle
AppleScript
Beide
A
undidentifier
können Bezeichner sein, also sagt AppleScript nein.quelle
C (gcc)
Kompilieren mit
gcc -Wfatal-errors error.c
.quelle
CJam 0.6.2
Probieren Sie es online aus.
quelle
BBC Basic, 7 Bytes (oder 0 Bytes)
Dies ist ein gültiger 7-Byte-Eintrag:
Dies ist die Fehlermeldung, die vom Interpreter ausgegeben wird, wenn der Code nicht vollständig verstanden werden kann.
Auf der anderen Seite ist dies nicht:
Dies ist ein gültiges Schlüsselwort in BBC Basic, das absichtlich einen Fehler eines bestimmten Codes in das Programm einbringen soll, aber die Syntax ist falsch (es wird kein Code angegeben.) Daher wird zurückgegeben
Syntax error
(was wiederum zurückgegeben wird,Mistake
wenn es ausgeführt wird.)Generell führt die von Falko in seiner Antwort beschriebene Vorgehensweise zu
Mistake
BBC Basic. Es gibt einige Ausnahmen. Alles, was die Fehler erzeugtDATA not LOCAL
oderON ERROR not LOCAL
zum berühmten Null-Byte-Quine führt: Ein leerer Quellcode erzeugt eine leere Datei.Da die meisten Fehlermeldungen in BBC basic Kleinbuchstaben sind (und daher keine gültigen Schlüsselwörter), bin ich mir ziemlich sicher, dass eine ungültige Eingabe letztendlich zu einer dieser Möglichkeiten führt.
quelle
CoffeeScript
Schlägt beim ersten Fehler fehl, daher ist es recht einfach:
Demo
quelle
Forth
Probieren Sie es hier aus
Dies war überraschend einfach zu finden.
quelle