Ihr Ziel ist es, "Hallo, Welt!" (abzüglich der Anführungszeichen). Dies ist ein Beliebtheitswettbewerb , bei dem die meisten Stimmen gewonnen haben. Die Codelänge wird zum Unterbrechen von Bindungen verwendet.
Alles ist möglich, solange die folgenden Regeln eingehalten werden:
- Alle Zeichen müssen entweder Buchstaben oder Zahlen sein, daher dürfen Sie nur Zeichen in der Zeichenfolge "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" verwenden.
- Der gesamte Code, den Sie verwenden, muss sich in einer Datei befinden, mit Ausnahme der importierten Module / Klassen / was auch immer sie in Ihrer bevorzugten Sprache heißen.
- Es sind nur die Standardbibliotheken / Frameworks für die Sprache Ihrer Wahl zulässig (z. B. Pythons Math-Modul, nicht jedoch Numpy, Scipy und Pygame). Ich werde TkInter erlauben, da es der De-facto-Standard für GUIs in Python ist.
- Es ist keine Eingabe erlaubt, sei es das Lesen von Standardinhalten, das Lesen einer Datei, das Verteilen eines Bildes oder das Lesen aus dem Internet.
+10 Brownie-Punkte, wenn du herausfindest, wie es in Java geht, ohne die Regeln zu biegen.
Auf die Plätze, fertig, Code!
BEARBEITEN: Klammern ({}), Klammern ([]) und Klammern (()) sind zulässig, da dies für die meisten Sprachen ohne sie so gut wie unmöglich wäre. Ich entferne auch die Zeichenbegrenzungsregel. Hoffentlich wird es dadurch interessanter.
EDIT ^ 2: Leerzeichen sind ebenfalls erlaubt. Mein Gehirn funktioniert nicht richtig, sorry. >. <
;
? Wie kann ich etwas in C schreiben?72 101 108 108 111 44 32 87 111 114 108 100 33{a.
Benötigt die Periode am Ende, um zu funktionieren, und ein Pfad durchu:
erfordert in ähnlicher Weise einen Doppelpunkt. Ohne.
und:
wir sind nichts.Antworten:
Perl
Einige sagen, Perl sei eine Sprache voller Ascii-Rauschen und zufälliger Symbole wie
$
... Das stimmt nicht: Pquelle
s/PATTERN/REPLACEMENT/FLAGS
, aber Sie können tatsächlich fast alles verwenden, was Sie wollen, anstatt die Schrägstriche. Der Code hier verwendet "z" anstelle von Schrägstrichen und verwandelt (nichts) in "Helloq Worldm". Dann ersetzt er "q" für chr 44 (verwendet das Flag \ e, um REPLACEMENT aka "chr 44" als Ausdruck auszuwerten). ". Es ersetzt dann "m" durch chr 33, ein "!" Und druckt es aus.q//
kann ein beliebiges Trennzeichen verwendet werdenq!! q** q\\ q;;
. Einige Ausnahmen sind , dass schließen(
Sie verwenden)
,q() q[] q{} q<>
und dass ein alphanumerisches als Trennzeichen zu verwenden, sollte es vom Betreiber nicht zulassen Mehrdeutigkeit angeordnet werden, zum Beispielq qq
,q 66
. Die gleichen Tricks gelten für andere zitatähnliche Operatoren.C
quelle
switch(putchar(72)){}switch(putchar(101)){}
usw.putchar(putchar(108))
(Bearbeiten - BBC Basic hat die Antwort wie vorgeschlagen getrennt. Die meisten Abstimmungen hierüber sind definitiv für die LOGO-Antwort.)
LOGO
Dolmetscherin unter http://www.calormen.com/jslogo/#
Ausgabe (das grüne Dreieck ist der Schildkrötencursor)
quelle
Applescript
Keine Klammern
[]
, Klammern{}
oder Klammern()
in diesem:Ausgabe ist:
quelle
set s to s as list
transformiert"H"
in{"H"}
(eine Liste). In anderen Sprachen, wie Java, ist dies normalerweise viel komplizierter.Bash
Diese Art von Arbeiten, wenn Sie Ihre Augen schielen:
quelle
banner Hello World
oderfiglet Hello World
,
und zu bekommen!
. Ansonsten würde ich einfach alt verwendenecho
.base64
Erfüllt die ursprünglichen Regeln.
quelle
"
Python
Also, wir nehmen einfach an, dass jeder horizontal liest? Für diejenigen Benutzer, die vertikal lesen möchten:
quelle
sys.stdout.write
ist die Standardmethode für die Ausgabe von Text ohne Zeilenumbruch in den meisten Versionen von Python (das Verhalten wurde in 3.0 geringfügig geändert). Das können wir hier wegen der Perioden nicht machen.Mehrsprachig: HQ9 +, H9 +, HQ9 ++, CHIQRSX9 +, HQ9 + B und HQ9 + 2D (1 Byte)
Vielen Dank an @victor für die Liste der Sprachen.
quelle
OMGROFL
Ich bin ein großer Fan von esoterischen Sprachen. Zum Glück ist OMGROFL alphanumerisch:
Der
iz
Befehl setzt einen Wert einer Variablen, in diesem Falllol
,lool
undloool
dienen als Variablen ...Der
rofl
Befehl gibt das ASCII-Äquivalent der in der Variablen gespeicherten Nummer aus.Der
stfu
Befehl beendet das Programm;)quelle
COBOL
Einige Änderungen waren erforderlich, um eine echte alphanumerische Quelle zu werden.
PROGRAM-ID kann fallengelassen werden. Sie erhalten einen generierten Programmnamen (siehe Meldungen).
ARBEITSLAGERUNG kann entfallen. Wieder stöhnt der Compiler.
Da in beiden Zeilen zuvor Punkte / Punkte fehlten, die jetzt, da die Beschreibungen vollständig fehlen, nicht mehr relevant sind, ist die Anzahl der Fehlermeldungen dieselbe wie zuvor, und der generierte Code für das Programm wird weiterhin nicht beeinflusst.
Wenn Sie COMP-5 in COMP ändern, sind die VALUE-Klauseln nicht mehr zulässig, da COMP 9999 nur vier Dezimalstellen enthält, während COMP-5 eine Zwei-Byte-Binärdatei mit allen verfügbaren Bitwerten ist.
Die Werte in den MOVEs sind die Dezimalwerte, die die Binärwerte ergeben, die die Zeichenpaare ergeben.
Auch wenn die COMP-Felder vierstellig sind und keine VALUE-Klauseln mit mehr als vier Stellen zulassen, können Sie im MOVE eines Literalwerts mehr Stellen ohne Kürzung verwenden ... fragen Sie mich nicht, warum. Die Compiler-Option DIAGTRUNC (die ich deaktiviert habe) erzeugt eine Warnungsdiagnose für diese.
Die Compiler-Option TRUNC (BIN) könnte verwendet werden, um COMP als COMP-5 zu behandeln, aber die MOVEs sind eine andere Möglichkeit, dies zu tun.
Da es sich um COBOL handelt, muss die Ausgabe in GROSSBUCHSTABEN erfolgen (eine Lüge, aber nur zum Spaß).
OK, unnachgiebig, produziert jetzt:
Da dies eine ungerade Anzahl von Zeichen ist, sind einige weitere Änderungen erforderlich, da wir mit diesem Compiler keine binären Felder mit ungerader Anzahl von Bytes haben können. Schauen Sie sich diese Linie von 13 Xs an! Es würde normalerweise als X (13) geschrieben werden, kann aber so sein, wie ich es gezeigt habe ...
Und ORTEXT wird als Name benötigt (oder auch nicht OR), da OR für den Compiler ein reserviertes Wort ist (es bedeutet natürlich OR).
Dies sind EBCDIC-Werte, keine ASCII-Werte, da sie auf einer EBCDIC-fähigen und Big Endian-fähigen Box ausgeführt werden.
Oh, COBOL erfordert viele Punkte. Ich habe sie ausgelassen (sie sind verboten), also habe ich viele Kompilierungsnachrichten erhalten. Ich habe den Compiler gerade angewiesen, den Code trotzdem zu generieren (keine der Meldungen bezieht sich auf den Objektcode).
Auch ohne DIAGTRUNC sind die Nachrichten jetzt bis zu 17 ...
quelle
-
es erlaubt istRuby (nur mit Alumni und Leerzeichen)
Ausgabe:
Hello, World!
quelle
Javascript
Verwenden Sie zum Testen die Browserkonsole.
quelle
JavaScript
quelle
ferNANDo
quelle
Rebol
Alphanumerische Einzellösung:
Oben ist ein Update, das Dr. Rebmus exzellenten Vorschlag verwendet
add space 1
(der produziert!
), um zu allen Charakteren zu gelangen.Unten ist die Originalversion:
Kürzere Version mit Klammern:
Und noch kürzere Version mit Hosenträgern:
Und kürzeste Version mit beiden Klammern:
Rebol verwendet geschweifte Klammern
{}
für mehrzeilige Anführungszeichen . Also völlig gültig unter Regeländerungen, aber nicht ganz in vollem Geist (IMHO) wie meine ersten beiden Antworten oben.NB. Das zu drucken
!
war ein Schmerz!Rebol erlaubt und verwendet Interpunktionszeichen routinemäßig für Funktionsnamen und Datentypen. Optionen wie
to-char 33
oder sindto char! 33
nach den Regeln nicht zulässig (auch wenn diese Interpunktionen keine Operatoren sind).Zum Glück fand ich eine freche Art und Weise durch das Rebol Systemobjekt drehen:
make object! [...]
in einen String und Kirsche Pick , dass!
von ihm :)Update: Und jetzt auch noch ein Komma aus dem Lizenztext im Systemobjekt.
quelle
!
ist nicht erlaubt-
oder!
so können Sie jetzt die Down-Abstimmung entfernenC
Verwendet nur alphanumerische Zeichen, Leerzeichen und Klammern {}, Klammern [] und Klammern ().
printf () akzeptiert ein Zeichen * als Argument, aber da wir keine Anführungszeichen (") verwenden können, typisiere ich die Zeichenfolge als ein langes langes Array. Die hier angezeigten Werte sind ASCII-Zeichenfolgen in Little Endian (0x48 = H, 0x65) = e, 0x6c = l usw.) Ich habe es zu long long [] typisiert, da ich auf diese Weise ein 8-Byte-Argument übergeben und daher nur zwei printf () -Aufrufe anstelle von vier verwenden kann.
quelle
BBC BASIC
Emulator bei bbcbasic.co.uk
Trenne dich von meiner LOGO-Antwort.
Der einfache Weg
Die Zahlen auf der rechten Seite sind nur ASCII-Codes. Dies ist genauso wie beim Drucken. Wenn mir ein Komma erlaubt wäre, könnte ich es in einer einzigen Zeile machen (
VDU 72,101,108,etc.
)Ein kreativerer Weg
quelle
Mathematica
quelle
DC
DC ist genau das richtige Werkzeug für diesen Job.
Der
P
Befehl DCs -command ruft eine Zahl vom Stapel ab und gibt ihre rohe Computerdarstellung an STDIO aus. Sehen als5735816763073854918203775149089 = 0x48656C6C6F2C20576F726C6421
, was wie0x21, 0x64, 0x6C... = 'H', 'e', 'l'...
in einer Little-Endian-Architektur dargestellt wird, gibt es ausHello, World!
.quelle
16i48656C6C6F2C20576F726C6421P
JavaScript!
Und sie sagten, dass es nicht möglich sei ... Keine Zuweisungsoperatoren, keine Verkettungen, keine Anführungszeichen! Arghhhh!
Fürchte dich nicht ... Für die Kraft
with
bist du ...quelle
Javascript
Update: Es ist gelungen, eine Reihe von Charakteren zu entfernen, indem auch eine Weltfunktion eingeführt wurde.
Eine andere Javascript-Lösung, die in console.log schreibt:
Inspiriert von diesem Eintrag .
Zuerst definiere ich die Funktionen Hello und World. Dies wird später verwendet.
Dann starte ich meine Kette von verschachtelten Withs. Die
with (console)
undwith (String)
werden verwendet, damit ich sie später aufrufen kannconsole.log
undString.fromCharCode
ohne einen Punkt zu verwenden.Es ist nun geplant, den String
Hello, World!
durch den Missbrauch verschachtelter Withs zu erstellen. Jedes Mal, wenn ich concat () aufgerufen habe, wird der resultierende String der Kontext im nächsten with-Block sein. Ich mache eine Abkürzung, um schnell"Hello"
auf diename
Eigenschaft derHello
Funktion zuzugreifen . Dann verkette ich die Komma- und Leerzeichen mitString.fromCharCode
.Der nächste Trick ist, den
"World"
Teil der Zeichenfolge zu erhalten. Ich kann nicht dieselbe Methode verwenden, die ich zuvor verwendet habeHello
, da ich World.name nicht aufrufen kann. Stattdessen habe ich diese Logik in die World-Methode eingefügt und sie aufgerufen.Schließlich hänge ich das letzte Ausrufezeichen an und sende das Ergebnis direkt an die Protokollfunktion, die natürlich console.log ist.
quelle
Perl
In einem modernen Perl (5.10 oder neuer):
In älterem Perl:
Beide oben genannten Lösungen verwenden Perl-
q
Zitat-ähnliche Operatoren und ermöglichen selektive Begrenzer zum Zitieren einer Zeichenfolge, z.q{}
q[]
q()
q//
Diese Lösung erfordert die Regeländerung, die Klammern, Klammern oder Parens zulässt. Ich bin der Meinung, dass eine
mniip
exzellente Perl-Antwort mehr im Sinne der Regeln (+1) ist, obwohl sie absolut gültig ist.Wenn ich ein Blatt aus der
mniip
Antwort herausnehme, könnte meine Lösung so geschrieben werden:und während es für das Auge härter ist, funktioniert es.
quelle
syntax error at -e line 1, near "say chr"
Perl
quelle
Python:
verursacht "Hallo Welt!" auf Ihrem Bildschirm erscheinen. Glaubst du mir nicht? Probieren Sie es aus! Dies nutzt das Web nicht wirklich, sondern öffnet einen Browser, der möglicherweise eine Website aufruft.
quelle
Leerzeichen
Okay, wir können Whitespace verwenden. Es verwendet nur
Space
,Tab
,LineFeed
und ignoriert alle anderen Zeichen.Mit Kommentar:
S
,T
oderL
MittelSpace
,Tab
oderLineFeed
sind.Mit Hervorhebung: http://en.wikipedia.org/wiki/Whitespace_(programming_language)#Sample_code
quelle
dc, (26 bytes für die golfspieler)
Leerzeichen und
[]
Klammern sind jetzt zulässig:Ausgabe:
quelle
Rebmu , 46 Zeichen
Starke Parallelen zur Lösung von @ dragetun in Rebol (weil Rebmu ein Rebol / Red-Lehrmittel ist, das als "Dialekt" die Aufmerksamkeit auf die Sprachen lenken soll, indem es bei Code Golf rockt. :-P)
Um die fehlenden Zeichen zu finden, habe ich jedoch etwas offensichtlicheres getan. Ich habe nur das Leerzeichen erweitert, anstatt die Systemzeichenfolgen zu durchsuchen. Sie können Leerzeichen 1 hinzufügen , um das Zeichenliteral # "!" und füge Leerzeichen 12 hinzu , um das Zeichenliteral # "," zu erhalten.
Wenn wir dies ausführen, können wir sehen, dass es "unbemerkt" wird:
Welches ist ziemlich logisch:
quelle
T-SQL, 52
Ah, das ist besser! Direkte binäre Konvertierung, nur 52 Zeichen.
Vorher...
Es gibt eine viel klügere und Golfier Lösung dieses Problem , die funktionieren würde, wenn wir nutzen könnten
=
und+
(Nachschlagen integrierte Standard-Daten in msdb und die Verwendung dieser ein EXEC-able Query - String zu konstruieren)Aber da wir nicht können, erhalten Sie diesen naiven Ansatz:
quelle
Python:
Pfff, wer braucht den numerischen Teil von alphanumerisch?
Dies ist vom Gebietsschema abhängig, daher kann Ihr Kilometerstand variieren. Wenn Sie dieses Ergebnis jedoch wirklich replizieren möchten, können Sie anstelle der Importanweisungen Folgendes verwenden:
(Dies ist nicht Teil meines Beitrags. Ich teile nur meine Einheimischen aus Gründen der Erholbarkeit.)
quelle
J - 73 Zeichen
Es kann doch getan werden!
Hier ist die Sache mit J. Die meisten Primitiven sind ASCII-Interpunktion, gefolgt von bis zu zwei Punkten oder Doppelpunkten. Bei den Primitiven, die keine Interpunktion enthalten, handelt es sich um alphanumerische Zeichen, denen zwei Punkte oder Doppelpunkte folgen. Wir dürfen also nichts davon, außer
{ } [ ]
.[
und]
sind Identitätsverben und damit unbrauchbar.Zum Glück
{
Indizes Arrays, also wenn wir haben, sagen sie, eine Zeichenfolge mit jedem einzelnen ASCII - Zeichen (a.
genannt Alphabet ), können wir die Buchstaben aus durch ihre ASCII - Codepunkte ziehen. Wir haben auch eine Backup-Methode, um Strings zu machen ,0 : 0
und dann Sachen und dann einen Lone)
. der Doppelpunkt , in dem hat einen Aliasnamen in der Standard - Bibliothek,def
.Dann gibt es ein Verb in der Standardbibliothek
show
, das Ihnen die interne Darstellung eines Verbs gibt, wenn Sie den Namen als Zeichenfolge übergeben. Es gibt ein anderes Verb,do
das eine Zeichenfolge auswertet. Wenn wir also aus einera.
solchen Darstellung eine herausziehen können , können wir das auswerten und herausziehenHello, World!
.Unser Retter kommt in Form von
take
, ein Alias für{.
das hat einena
in seinem Namen. Wirshow'take'
werden wiederkommentake=: {.
, damit wir unserea.
und damit eine Lösung haben.Wir können es loswerden,
{
indem wir das im Wesentlichen äquivalentepick
Element aus der Standardbibliothek verwenden, aber das Paren am Ende kann nicht vermieden werden.quelle