Schreiben Sie ein Programm, das keine Eingaben macht und Hello, World!
auf stdout oder die nächstgelegene Alternative Ihrer Sprache druckt . Der Haken ist, dass jede Zeile in Ihrem Programm nur druckbare ASCII-Zeichen enthalten darf und in lexikografischer Reihenfolge, auch bekannt als sortiert, sein muss.
Hier sind alle 95 druckbaren ASCII-Zeichen der Reihe nach aufgeführt:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
So wäre zum Beispiel die Zeile !!A0~
ungültig, weil die A
und 0
nicht in Ordnung sind. Die Zeile !!0A~
wäre gültig.
Jede Zeile in Ihrem Programm kann beliebig lang sein und es kann eine beliebige Anzahl von Zeilen geben. Leerzeilen gelten als sortiert. Jede der Zeilenumbrüche in Ihrem Programm muss gleich sein (kein Mischen \n
und \r\n
). Tabulatoren und andere nicht druckbare ASCII-Zeichen sind verboten.
Aufgrund der großen Nachfrage wurde die Gewinnbedingung geändert:
Die Einsendung mit den wenigsten Zeilen gewinnt. Tiebreaker geht zum kürzesten Programm (Zeilenumbrüche zählen als Einzelzeichen).
Es sollte nur Hello, World!
ein optionaler Zeilenumbruch ausgegeben werden. Beachten Sie, dass HQ9 + ungültig ist, da es ausgegeben wirdhello, world
. Ich kann ähnliche Sprachen wie HQ9 + verbieten, die ein Zeichen "Hallo, Welt!" Haben. Befehle aufgrund ihrer Trivialität.
Hinweis:
Dies ist auf jeden Fall möglich , in Unary und Lenguage , wenn auch nicht sehr prägnant.
quelle
Antworten:
Headsecks , 1 Zeile, 366 Bytes
Headsecks ist eine triviale Brainfuck-Substitution, bei der es nur auf den Codepunkt modulo 8 ankommt. Das äquivalente Brainfuck ist lediglich
Zum Glück dieser naive Ansatz passt einfach . Es gibt ein gewisses Potenzial, Bytes abzubauen, aber es könnte schwierig sein.
Getestet mit diesem Python-Interpreter .
Code wird generiert
quelle
/// , 7 Zeilen, 22 Bytes
Eine seltene Chance für ///, wettbewerbsfähig zu sein (solange niemand mit Unary und Lenguage anfängt ...).
Der Code trifft zuerst auf a
/
und analysiert dasals Ersetzungsanweisung, die alle Zeilenumbrüche aus dem Rest des Programms entfernt. Danach liest das Programm nur noch
die wörtlich gedruckt wird, da sie keine weiteren Schrägstriche enthält.
quelle
JavaScript (
676662 Zeilen,227269 Bytes)(Hinweis: Nur unter Firefox 36 und Safari 8 getestet, enthält kleinere ES6-Funktionen (die
Set
Klasse))Der obige Code bewirkt im Grunde:
Offensichtlich
alert
ist nicht sortiert. Stattdessen müssen wir die Anweisung als String generieren und "auswerten":Wie wird der String generiert? ES5 unterstützt die Fortsetzung von Zeilen
Da der Zeichencode jedoch vor allen Kleinbuchstaben
\
angezeigt wird , müssen die Kleinbuchstaben mit anderen Methoden generiert werden.Wir leihen uns hier eine Idee von JSFuck aus. Die in den Warnmeldungen enthaltenen Kleinbuchstaben sind:
All dies kann aus Zeichen von Standardobjekten extrahiert werden, die in einer bestimmten sortierten Reihenfolge ausgedrückt werden können:
Wie bewerten wir den String? Sicher können wir nicht verwenden,
eval(s)
da es nicht sortiert ist. Alternativ könnten wir verwendenFunction(s)()
, aber wir können es nicht verwenden,Function
da es auch nicht sortiert ist. IstFunction
jedoch der Konstruktor aller Funktionen, was bedeutetSet.constructor === Function
.Durch Hinzufügen des Bezeichners
constructor
wird die Liste der Kleinbuchstaben zu:was glücklicherweise noch generiert werden konnte von
"truefalseundefinedfunction"
:Nach dem Prettifizieren sollte der obige Code wie folgt lauten:
Update: Umbenannt
E
,L
,O
,R
, ,T
um verschiedene Wiederholungen von$
4 Zeilen zu reduzieren.quelle
=Z[3*7]
kann, dass=Z[~-22]
nur ein Zeilenumbruch anstelle von zwei benötigt wird.Schlaflosigkeit , 4 Zeilen, 59 Bytes
Dieses Programm wird durch Optimierung der Zeilenzahl generiert.
10 Zeilen, 43 Bytes
Dieses obige Programm wird durch Optimieren der Bytezahl generiert.
quelle
Cygwin Bash, 16 Zeilen, 60 Bytes
Dies funktioniert nur aufgrund des Dateinamens, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird, und der Tatsache, dass Cygwin die Dienstprogramme ohne Berücksichtigung der Groß- und Kleinschreibung aufruft, auch wenn Sie nicht festlegen, dass der Pfad ohne Berücksichtigung der Groß- und Kleinschreibung erkannt wird.
Beachten Sie dies
ECHO
am Ende.quelle
> <> , 6 Zeilen, 111 Bytes
Ich habe Probleme, eine Extralinie auszuspielen, aber auf jeden Fall bin ich froh, die 7-Linien-Methode geschlagen zu haben.
Erläuterung
> <> ist eine stapelbasierte 2D-Sprache, in der Anweisungen einzelne Zeichen sind und der Programmfluss nach oben, unten, links oder rechts erfolgen kann. Der
"
Befehl schaltet das Parsen von Strings um und drückt Zeichen, bis ein Closing erreicht"
ist. Aufgrund der Natur von> <> gibt es jedoch kein "mehrzeiliges Parsen von Strings" wie bei CJams Strings oder Pythons Strings mit dreifachen Anführungszeichen. Dies stellte sich als schwerwiegendes Problem heraus, da das Beginnen und Beenden einer Zeile mit einem"
und andere Zeichen dazwischen (z. B."some chars"
) nicht zulässig sind!Beachten Sie dies
/
und\
spiegeln Sie den Programmablauf wider. Wir führen die erste Zeile in umgekehrter Reihenfolge aus, und die meisten Zeilen werden tatsächlich rückwärts ausgeführt!Nebenbei bemerkt, hier ist ein amüsanter Versuch mit einem Minimum an Bytes (23 Zeilen, 47 Bytes):
quelle
CJam,
54 Zeilen, 162 BytesGleiche Anzahl Leitungen wie Insomnia! (aber viel mehr Bytes)
Probieren Sie es online aus .
Erläuterung
CJam druckt den Stapel anschließend automatisch aus.
Vielen Dank an @Optimizer, der mich daran erinnert hat, dass das
Sc
funktioniert, weil es sonstSX|
fehlschlägt (es macht ein setwise oder gibt stattdessen das Array bestehend aus einem Leerzeichen und 1).quelle
> <> (Fisch) , 5 Zeilen, viele Bytes
Der Code ist extrem lang, wenn ich sage
[6535529689086686142930090 '+' signs]
und[6535529689086686142930090 'd' characters]
in der ersten Zeile des Codes, meine ich, dass es buchstäblich gibt6535529689086686142930090
Pluszeichen in einer Reihe gibt!(Fügen Sie für die folgenden Zeilen die erforderlichen Präfix-Leerzeichen hinzu.)
Eine kürzere testbare Alternative, die nur druckt
Hi
:Methode:
:1(?;:882**%:o-288**,
.(Mit dieser Methode können beliebig lange Zeichenfolgen mit mehr als 2 Zeichen gedruckt werden.)
quelle
[6535529689086686142930090 '+' signs]
und steht[6535529689086686142930090 'd' characters]
buchstäblich in der ersten Codezeile." (Wenn nicht klar ist, was ich damit meine, überprüfen Sie den zweiten Teil des Codes.)PHP (7/17 Zeilen, 36/59 Bytes):
Aufgrund der Anzahl ungültiger Antworten habe ich diese Antwort umgeschrieben.
Die Browserversion? Weg.
Aber ich habe 2 Lösungen, beide basierend auf bitwise
xor
(^
) von Strings in PHP.Dies ist eine äußerst leistungsstarke Lösung! Manchmal können so viele Bytes gespart werden.
Erstens die kürzeste Antwort:
Ich weiß, es sieht schrecklich aus, aber es funktioniert!
Der nächste hängt von Zeilenumbrüchen ab.
Ja, es werden Zeilenumbrüche verwendet (
\n
/ UNIX-Stil ist erforderlich)!Die Zeilenumbrüche in diesem Fall müssen funktionieren.
Es ist nicht perfekt, aber es funktioniert!
Beide Antworten basierten auf der @ MartinBüttner - Lösung :
Ein besonderer Dank geht an @ n̴̖̋h̴̖̋ã̷͉h̷̭̿d̷̰̀ĥ̷̳ , @CJDennis , @ MartinBüttner und @skagedal für die Aufdeckung all meiner Fehler und für ihre Vorschläge.
quelle
Hello , Wor l d !
. Beachten Sie die zusätzlichen Leerzeichen! Dies ist leider keine gültige Antwort.<?php
ungültig ist! Allerdings werde ich dir dafür vergeben! OK, gerade getestet,<?Php
welches funktioniert, also habe ich gerade erfahren, dass beim Starttag die Groß- und Kleinschreibung nicht beachtet wird!"!<br
- Dies ist nicht sortiert. Die zweite hat als Zeile 10:."!
- nicht sortiert.Pyth, 7 Zeilen, 23 Bytes
Ziemlich einfach, verwenden Sie einfach eine mehrzeilige Zeichenfolge und entfernen Sie die Zeilenumbrüche.
Probieren Sie es hier aus.
quelle
Viertens 41 Zeilen, 143 Bytes
Probieren Sie es online aus.
Darauf bin ich sehr stolz. Ich habe es ziemlich schnell rausgepeitscht, als ich herausgefunden habe, dass ich es schaffen kann, da Google nach Sprachen gesucht hat, bei denen die Groß- und Kleinschreibung nicht berücksichtigt wird, und ich kenne Forth bereits recht gut. Es kann fast definitiv verkürzt werden, sowohl Bytes als auch Zeilen. Vorschläge werden geschätzt. : D
Dieses Programm gibt im Wesentlichen den Dezimalwert jedes ASCII-Zeichens aus und druckt dann jedes einzelne aus. Ich habe versucht zu optimieren, während ich es geschrieben habe, daher ist es weniger lesbar als ich möchte.
quelle
Emit
Zeilen funktionieren nicht, dai
(105) kleiner alsm
(109) ist.Marbelous, 9 Zeilen, 94 Bytes
Testen Sie es hier online.
Using spaces for blank cells
muss überprüft werden.Visuelle Darstellung der Quelle:
Erläuterung: Jeder hexadezimale Wert in diesem Programm bewegt sich mit jedem "Häkchen" nach unten (es sei denn, er ist aktiviert
\\
, in diesem Fall bewegt er sich nach rechts).++
erhöht den Wert,--
verringert,~~
wendet ein Bit nicht an usw. Werte, die nach unten fallen, werden als ASCII-Zeichen gedruckt.Zum Beispiel: Das
33
in der oberen Ecke wird(((0x33 +1 +1) << 1) +1 +1 = 0x6C (l)
.quelle
Perl, 17 Zeilen
quelle
Rebol - 15 Zeilen (51 Bytes)
Worte in Rebol Groß- und Kleinschreibung (zB.
PRINT
,Print
Undprint
würden die gleiche Funktion alle nennen).Der obige Code wurde aufgeräumt:
NB.
sp
gibt das Leerzeichen zurück !quelle
{
darf nicht vor Buchstaben stehen.{,}
. Dies ist jetztSp + 12
(über 3 Zeilen) das entspricht Leerzeichen + 12 (dh Komma)Unär , 1 Zeile, viele Bytes
Jeder Charakter in diesem Programm ist
0
. Die Quelle ist zu lang, um sie hier einzufügen, aber sie besteht aus einer Folge dieser vielen Nullen:Dies ist die Dezimaldarstellung für diese Binärzahl:
Welche wurde aus diesem BrainF *** Programm erstellt:
Sehen Sie, wie ich es generiert habe: http://ideone.com/lMT40p
quelle
Stapelverarbeitung - 39 Zeilen (202 Byte)
Ich wollte die Größe reduzieren, indem ich die verzögerte Erweiterung aktivierte, indem ich den Code innerhalb eines
cmd
Anrufs über den/v on
Schalter ausführte, konnte aber nicht alle Karat überwinden.Ohne die Zeilenumbrüche (und Karat, um Zeilenumbrüchen zu entgehen):
quelle
Ruby, 19 Zeilen, 95 Bytes
Möglicherweise die zweithärteste Code-Einschränkung für Ruby, die ich auf dieser Site gesehen habe, nach der Monstrosität hier .
Zur Erklärung bearbeiten: Die einzige Ruby-Ausgabemethode, die sortiert wird, ist die
<<
Methode in STDOUT. Leider ist die Konstante für STDOUT$>
und>
ist höher als die meisten ASCII - Symbole, es ist also nicht wirklich möglich , ein Verfahren auf sie zu nennen. Wir brauchen eine mehrzeilige Zuweisungsanweisung, um einen besser lesbaren Variablennamen zu erhalten.$;
(Semikolon ist immer noch ziemlich hoch, aber die meisten Variablen dieser Form können entweder nicht zugewiesen werden oder können nur Zeichenfolgen sein).Symbole (
:Wor
usw.) sind die einfachste Möglichkeit, ein Literal zu erstellen, und ich sehe keine Möglichkeit, Zeilenumbrüche aus einer Zeichenfolge zu entfernen. Daher benötige ich mehrere print-Anweisungen. Das Leerzeichen und die Interpunktion können nicht in ein Symbol-Literal aufgenommen werden, aber zum Glück ist diechr
Methode für Zahlen zulässig, sodass ich ein Zeichen aus dem ASCII-Wert abrufen kann.::
ist eine alternative Methode zum Aufrufen von Methoden. Raum ist schwierig, weil ich nicht schreiben kann32
, also subtrahiere ich 1 von 33 und ordne es einer Variablen zu.quelle
Netzhaut, 12 Zeilen, 29 Bytes (nicht konkurrierend)
Die Sprache ist neuer als die Herausforderung.
Probieren Sie es online aus
quelle