Herausforderung:
Nehmen Sie in der Programmiersprache Ihrer Wahl keine Eingabe vor und geben Sie den Namen Ihrer Programmiersprache aus.
Fair genug, richtig?
Beschränkungen:
- Sie können in Ihrem Code keine Zeichen verwenden, die im Namen Ihrer Programmiersprache enthalten sind. Wenn ich beispielsweise Batch verwende, darf ich in meinem Code nicht die Zeichen 'B' 'a' t '' c '' h 'verwenden. Beachten Sie, dass hierbei zwischen Groß- und Kleinschreibung unterschieden wird. Ich kann das Zeichen "b" weiterhin verwenden, da es sich von "B" unterscheidet.
- Sie können eine "Junk-Ausgabe" vor oder nach dem Namen der Sprache erstellen
- Die Versionsnummer zählt nicht zum Namen der Sprache. ZB kann ich die Nummer 3 im Code in meiner Antwort verwenden, wenn es in Python 3 ist
- Die Ausgabe des Programmiersprachennamens unterscheidet nicht zwischen Groß- und Kleinschreibung.
- Das brachiale Erzwingen aller möglichen Buchstabenkombinationen und die Hoffnung, dass Sie Ihren Sprachnamen erhalten, ist verboten.
Beispielausgaben: (Angenommen, meine Programmiersprache heißt Sprache) (✔ falls gültig, sonst ✖)
Language
✔Body language is a type of non-verbal communication in which physical behavior, as opposed to words, is used to express or convey information. Such behavior includes facial expressions, body posture, gestures, eye movement, touch and the use of space.
✔Language 2.0 - © 1078 AD some company
✔foobar
✖
Dies ist Code-Golf, daher gewinnt der kürzeste Code.
--version
nicht erlaubt ist"?Antworten:
Ausgänge zu STDERR
Die Ausgabe an STDERR ist jetzt standardmäßig auf + 33 / -21 eingestellt, was positiv, aber umstritten ist. Dies ist eine CW-Antwort zum Sammeln von Antworten , die nur einen Fehler in einer Sprache auslösen, in der Fehlermeldungen den Namen der Sprache enthalten.
Haskell, 1 Byte
Error:
Lua, 1 Byte
Error:
(Dateiname ist unwichtig)
Batch, 1 Byte
Error:
tinylisp, 5 bytes
Error:
R, 1 Byte
Error:
Java-Bytecode, 0 Byte
Error:
Groovy, 1 Byte
Beachten Sie,
a
dass durch ein beliebiges anderes Zeichen ersetzt werden kannError:
MATLAB, 1 Byte
Error:
PHP, 3 Bytes
Error:
CJam, 1 Byte
Error:
Zweig, 2 Bytes
Twig ist eine in PHP geschriebene Vorlagensprache. Es ist möglich, dass dies eine Mehrsprachigkeit ist.
Error:
Die Meldung variiert je nach gewähltem Programm.
SILOS , 2 Bytes
Probieren Sie es online! Ruft trivial undokumentiertes Verhalten auf. Silos ist der Name der Sprache.
Python, 6 Bytes
Da bei der Zeichenbeschränkung die Groß- und Kleinschreibung nicht beachtet wird und die Ausgabe nicht korrekt sein muss, ist dies eine gültige Antwort. Die Fehlermeldung, die es erzeugt, ist ungefähr so:
Probieren Sie es online! (Ausgänge zum 'Debug' Tab)
JavaScript, 10 Bytes
Dies erzeugt in allen Umgebungen die folgende oder eine ähnliche Fehlermeldung:
QBIC , 6 Bytes
In 6 Bytes können wir den aufgetretenen QBIC-Fehler eingeben: 9 auf dem Bildschirm, was auf einen Fehler außerhalb der Grenzen hinweist.
ForceLang, 2 Bytes
Fehler erzeugt:
Pip, 5 Bytes
(Hinweis: Dies funktioniert in der aktuellen Version zum Zeitpunkt des Schreibens vom 0.17.09.01 . Keine Garantie, dass sich der Interpreter nicht ändert, um diesen Fehler in Zukunft anders zu behandeln.)
Versucht, einen Ausdruck mit einem syntaktisch ungültigen Muster abzugleichen. Der erzeugte Fehler sieht ungefähr so aus:
Stax, 2 Bytes
Error:
zh
funktioniert auch.Tinte, 1 Byte
~
am Anfang einer Zeile steht, dass die Zeile eine auszuführende Anweisung und kein zu druckender Text ist. Ab welcher Version von inklecate TIO~
, stürzt der Interpreter mit folgendem Fehler ab , wenn nach dem nichts mehr angezeigt wird :quelle
<??
ist effektiver und kann nicht deaktiviert werden.SmileBASIC, 11 Bytes
Entspricht
SPSET 0,1474
. Setzt das Sprite 0 auf die Definition 1474, bei der es sich um das SmileBASIC-Logo handelt.quelle
MATL , 1 Byte
Die Ausgabe erfolgt über STDERR, was standardmäßig zulässig ist .
Die Ausgabe des Offline-Compilers lautet
Oder versuchen Sie es online! (erweitern Sie den Abschnitt "Debug").
quelle
X
oderZ
. Dies liegt daranX
, dassY
oderZ
Präfixe von zwei Zeichen Funktionsnamen sind, so dass einY
an sich ungültig istR, 1 Byte:
T
ist ein Alias für die KonstanteTRUE
. Die Ausgabe für das Obige ist also:Da Junk um den Namen herum zulässig ist, ist das "R" dort der Name der Sprache.
( Wie in einem anderen Kommentar erwähnt , funktionieren so ziemlich alle Buchstaben und Glyphen gleich gut, da sie die Meldung "Fehler: ..." auslösen, die "r" enthält.)
quelle
HTML,
24 bis20 BytesHTML, 16 Bytes
Wie von @Bob hervorgehoben , erkennen moderne Browser HTML-Entitäten ohne Semikolon, obwohl es sich um technisch ungültiges HTML handelt. Natürlich ist es perfekt für Code-Golf.
HTML, 4 Bytes
Und natürlich die uninteressante Antwort.
Siehe auch meine CSS-Antwort .
quelle
HTML
. Sie können weitere vier Zeichen speichern, indem Sie die Semikolons löschen, was zu einer technisch ungültigen HTML-Version führt (die jedoch in modernen Browsern noch funktioniert).HTML
?html
aber gültig sein, die Punktzahl um 12 Bytes reduzieren.Vim, 0 Bytes
Wenn Sie Vim starten, zeigt der Editor einen Begrüßungsbildschirm an, der folgendermaßen aussieht:
Sie können sehen , heißt es
Vim
hier:Vorherige Antwort:
Vim, 1 Byte
In Vim 8 wird durch Drücken von
Type :quit<Enter> to exit Vim
in der letzten Zeile angezeigt . Ich bin mir nicht ganz sicher, ob das zählt.quelle
Python, 15 Bytes
Python 2 (15)
Es verkettet die Zeichenketten unter Verwendung des Oktals,
150
das das Ergebnis isth
und ausführt"elp()"
. Dies gibt denhelp()
Befehl aus, der besagt"Welcome to Python 3.5's help utility!"
, dass die Anforderungen erfüllt werden.Python 3 (17)
Probieren Sie es online!
quelle
help
zählt, es funktioniert nur in einer REPL-Umgebung.p
ist erlaubt aberP
nicht. Regel 1.C, 0 Bytes.
Probieren Sie es online!
quelle
c
kommen aus extrem implementierungsabhängigen Quellen. Wäre schöner gewesen, wenn Sie zumindest eine Meldung provoziert hätten, diec
in irgendeiner Kesselplattenausgabe enthalten ist.Huh ?, 0 Bytes
(Nein, in diesem Codeblock ist nichts)
Die Sprache ist nach ihrer Ausgabe benannt, also ...
In der von mir überprüften Implementierung nimmt der Interpreter die Länge mod 8 jeder Zeile einer bestimmten Datei und wechselt je nach Ergebnis. Bei Null wird gedruckt
Huh?
. Da nachfolgende Zeilenumbrüche entfernt werden, können Sie auch eine 1-Byte (\n
) - Version erstellen .Beachten Sie, dass keine Ausgabe an stderr oder caseswapping oder andere Tricks erfolgt. Es ist nur so, dass Huh? S sehr verwirrter Dolmetscher sich endlich als nützlich erwiesen hat.
quelle
V , 2 Bytes
Probieren Sie es online!
Die offensichtliche Antwort lautet:
Probieren Sie es online!
Welches ist "Fügen Sie den Buchstaben" V ", und Groß- / Kleinschreibung umschalten". Da Sie jedoch Junk-Ausgaben vor / nach dem Sprachnamen zulassen, funktioniert dies auch.
Der
¬
Befehl benötigt zwei Zeichen zur Eingabe und fügt jedes ASCII-Zeichen dazwischen ein. Wenn Sie das zweite Zeichen nichtÿ
angeben , wird automatisch der Standardwert (ASCII 0xff) verwendet. Daher fügt dieses Programm jedes Zeichen in der latin1-Codierung zwischenU
und einÿ
.quelle
Brainfuck , 54 Bytes
Ausgänge
brainfuck
, vorausgesetzt, ein 8-Bit-Band ist links offen. Probieren Sie es online!Teilbeträge gehen wie immer an @ primo's Hello, World! antworte .
Alternativen mit unterschiedlichem Gehäuse
Brainfuck (62 Bytes):
BrainFuck (68 Bytes):
quelle
MATLAB, 3 Bytes
Die Ausgabe ist wie folgt. Irrelevante Informationen wurden ersetzt durch
[...]
). Einige Teile der Ausgabe können sich je nach Version, installierten Toolboxen usw. ändern.quelle
Octave
, so können Sie nicht verwenden ,v
unde
.Python,
2753494845 Bytes-3 Bytes von @ wizzwizz4
Gibt den folgenden Text aus, in dessen erster Zeile "Python" steht.
quelle
HELP()
oderHELP(HELP)
ist kürzer.import this
.Python 2 (1 Byte)
Ausgabe...:
quelle
0xa0
(nbsp) oder einem anderen High-Byte, und Sie werden den gleichen Fehler erhalten!> <> ,
1210 BytesDies wird so lange gedruckt, bis dem Interpreter der Platz ausgeht.
Probieren Sie es online!
12-Byte-Version für diejenigen, die eine saubere Ausgabe mögen. Empfohlen von Aaron (kein Fehler, 1 Ausgabe)
quelle
"-o-o-o;_!\ _!
Java, 1 Byte
Die Ausgabe zu stderr ist:
quelle
CSS, 25 Bytes
Beachten Sie, dass Stapelüberlauf-Snippets mit zusätzlichem Markup versehen werden, sodass "CSS" mehrmals angezeigt wird. Öffnen Sie eine
.html
Datei mit Inhaltum das Ergebnis wie beabsichtigt zu sehen.
quelle
Bash CLI, 9
Wenn Sie ein aktuelles Skript und nicht nur einen Befehl in der interaktiven Befehlszeile wünschen, können Sie dies tun:
Bash, 13
Ausgänge
/bin/bash
quelle
echo $0
sollte funktionierenx $0
funktioniert, vorausgesetzt, es gibt keine ausführbare Datei mit dem Namen x auf dem Pfad. In diesem Fall ersetzen Sie einen anderen Buchstaben, eine Ziffer oder ein nicht spezielles Zeichen.$'ec\x68o' $0
heilt dieses Detail.C, 15 Bytes
Kompiliertes C auf einem Linux-Computer mit einem deutschen Gebietsschema:
main(){main();}
Es läuft auf einen Stapelüberlauf und druckt
Speicherzugriffsfehler
auf stderr.quelle
dc, 6
Ausgänge
dc
.Probieren Sie es online aus .
quelle
Pip , 8 Bytes
Nimmt den Charakter
I
undWR
gibt ihn inC
hr (80
) ausPIP
. Probieren Sie es online!Wenn Sie das
I
Gefühl haben, zu schummeln, sehen Sie sich zwei 9-Byte-Lösungen an , die keine der folgenden Funktionen verwendenPpIi
:Beide geben aus
pip
. Mit dem zweiten bin ich besonders zufrieden:Für eine korrekte Großschreibung benötigen wir eine 10-Byte-Lösung :
Wie dies funktioniert, bleibt dem Leser als Übung überlassen. ; ^)
quelle
C #,
6067 Bytesquelle
\u0043
und ebensoConsole
aber nichtC
gemäß den Fragenregeln verwenden kann . In C # können Sie Unicode-Escape-Sequenzen in Bezeichnern verwenden._=>System.\u0043onsole.Write("\x43\x23");
Brainfuck, 105 Bytes
Probieren Sie es hier online aus
quelle
---
in Ihrem Preisnachlass?R , 11 Bytes
Probieren Sie es online!
quelle
version$l
9 Bytesversion
ist genug (7 Bytes)J, 2 Bytes
a.
gibt das Alphabet der J-Sprache zurück - eine eingebaute Liste aller Bytes.Mein Original: 4 Bytes
Das kommt mir einfach ziemlich cool vor. Die Quadratwurzel (
%:
) von negativ 1 (_1
) ist i (0j1
).quelle
a.
. Druckt das Alphabet, das offensichtlich "J" enthält. Auf jeden Fall nicht so cool: /BASIC (ZX Spectrum),
42 Bytesdurchgestrichen 4 ist immer noch regulär 4
2 Bytes dank @ShaunBebbers gespart.
Hinweis: Im ZX Spectrum-Zeichensatz werden diese Bytes als angezeigt
Wenn Sie dies eingeben, analysiert das Spektrum zunächst eine optionale Zahl, gefolgt von einer Codezeile. Normalerweise ist die Zeilennummer,
1..9999
die bewirkt, dass der Code zum gespeicherten Programm hinzugefügt wird. Wird jedoch keine Zeilennummer angegeben, wird der Code sofort ausgeführt. Leider bedeutet ein Fehler im Spektrum, dass eine Zeilennummer von Null für gar keine Zeilennummer verwechselt wird, aber dennoch versucht wird, die Null als Teil der Codezeile auszuführen, was illegal ist und somit den Fehler verursacht.Die vorherige 4-Byte-Version generiert einen echten Fehler, anstatt sich auf einen Interpreter-Fehler zu verlassen:
Hinweis: Im ZX Spectrum-Zeichensatz werden diese Bytes als angezeigt
welche Ausgänge
weil die leere Zeichenfolge kein gültiger numerischer Ausdruck ist. (Ich hätte natürlich jede Anweisung verwenden können, die eine einzelne Ganzzahl enthält.) Wenn diese Antwort nicht akzeptabel ist, können Sie für 6 Bytes ein Programm schreiben, das aus einer einzelnen Zeile mit einem der Schlüsselwörter besteht, die keine Argumente akzeptieren, und dann
POKE
zum Ersetzen verwenden es mit einem ungültigen Schlüsselwort, dann versuchen SieRUN
das Programm.quelle
0 REM
erzeugt den gleichen FehlerC
2420 Bytes (Clang 3.8.1)Vielen Dank an @squeamish ossifrage, der mir geholfen hat, 4 Bytes zu sparen.
quelle
putchar(67);
?printf('c')
auch nicht gültig? Sie dürfen kein "C" in Großbuchstaben verwenden, aber Sie müssen Kleinbuchstaben eingeben, und die Groß- und Kleinschreibung wird nicht berücksichtigt.67
kürzer als'c'
:-)printf
braucht ein,char *
also muss ich verwenden""
Perl 5, 36 Bytes (35 + 1 für
-E
)Laufen Sie mit der
-E
Flagge.Die Variable
$^X
ist der Pfad zu der ausführbaren Datei, die das aktuelle Programm ausführt. Da der Perl-Interpreter aufgerufen wirdperl
, müssen wir den ersten Buchstaben in Großbuchstaben schreiben. Aber dieucfirst
Funktion enthält , einr
, was nicht erlaubt ist, so dass wir greifen müssen\U
und\E
, was drehen Großbuchstaben-Konvertierung ein und aus.Wir können den
/r
Modifikator für nicht verwendens///
, um die geänderte Zeichenfolge zurückzugeben, da diesr
nicht zulässig ist.Es ist wichtig zu wissen , dass der Name der Programmiersprache Perl ist Perl , und der Name des Interpreten ist Perl mit einem Klein
p
. Es gibt kein PERL .quelle
perl -v
die Zwänge der Herausforderung erfüllt, aber das ist viel interessanter :) Obwohl es Annahmen macht , die auf allen Systemen nicht halten (zB$^X
ist/home/foo/.plenv/versions/5.16.3/bin/perl5.16.3
für mich, aber es könnte genauso gut sein ,/home/foo/python
wenn ich wie verdreht wurde , dass ).perl -v
aber nichts in Perl. Also denke ich, dass es nicht zählt. Aber ich denke, es gibt einfachere Wege. Ich denke, wir können die verschiedenen Systeme mit etwas mehr Regex-Magie verbessern.perl -E'say$^X'
.-E'say`$^X -v`'
? Das ist unbestreitbar ein Programm.Viertens 5 Bytes
Probieren Sie es online aus
Druckt eine Liste aller Wörter in der Sprache.
Forth
zufällig in der Liste (erstes Wort in Zeile 125), obwohl ich nicht weiß, was es tut.quelle
R, 10 Bytes
Ausgänge:
Ziemlich ausführlich, nur um
R
den Namen zu haben, richtig?Aus @ djhurios Kommentar zu dieser Antwort mit R
version
geht auch der Trick.quelle
"r"
? Oder abhängig vom strengen "Sie können" Junk-Ausgabe "vor oder nach dem Namen der Sprache haben." du könntest es auch einfach tunT
.r
oder erforderlich. EinR
anderer Ansatz besteht darin, STDERR über einen Syntaxfehler auszugeben.)
AusgängeError: unexpected ')' in ")"
, die eine enthältr
.