Schreiben Sie in einer Sprache Ihrer Wahl ein Programm, das genau die Zeichen ausgibt, Hello world!
denen eine neue Zeile folgt. Der Code:
- sollte kein Zeichen mehr als zweimal verwenden (alphanumerisch, Symbol, Leerzeichen ... alles)
- sollte keine externen Ressourcen verwenden
- sollte keine Benutzereingaben verwenden
- sollte nichts anderes ausgeben
Ein Beispiel für ein gültiges Python-Programm:
print("He%so world!"%(2*'l'))
Ein Beispiel für ein ungültiges Python-Programm (das Zeichen 'r' wird dreimal verwendet):
print("Hel"+chr(108)+'o world!')
Gewinner ist, wer nach 14 Tagen die meisten Stimmen hat.
EDIT: Ein Gewinner wurde ausgewählt! Vielen Dank für Ihre Arbeit an dieser Frage!
Antworten:
Ruby (1.9+)
Da dies ein Beliebtheitswettbewerb ist, sollten wir versuchen, keine der Zeichen aus "Hallo Welt!" Zu verwenden. während andere Zeichen nur maximal zweimal verwendet werden:
Es sind übrigens 40 Zeichen.
Bash
Und dieser nutzt Unicode-Magie.
Anmerkungen:
Code:
Für diejenigen, die keine richtige Schriftart installiert haben, sieht es so aus:
Hier ist der Hexdump:
Sie müssen es auf einem Computer ausführen, auf dem der Standardzeichensatz utf-8 ist. Ich habe ein OSX10.8 mit iTerm2 in der folgenden Umgebung ausprobiert:
PHP 5.4
Dies verwendet zLib: (leider werden die Zeichen
e
und verwendeto
)Hexdump:
+1
Hier ist der Ruby 2.0-Code, mit dem ich nach Duplikaten gesucht habe:
quelle
Hello world!
gefolgt von einem Zeilenumbruch ausgibt"ascii//translit
übersetzt die Unicode-Zeichen in Basis-ASCII-Zeichen. Und natürlich fügt Echo die neue Zeile hinzu, sodass diese der Spezifikation entspricht (wenn wir die Ähnlichkeit der Oktette nicht berücksichtigen)Hello World?
stattHello World!
Sie müssen ausdrucksstärkere Sprachen verwenden.
Chinesisch,
6 43 ZeichenAusführen von Google Übersetzer auf diesem produziert
Hello world!
(Danke an @sreservoir und @Quincunx für das Update)
quelle
你好世!
喂世!
Kosten von golfen werden ... nun ja , es wird wirklich nichts mehr ausgegeben.HQ9 +, 1 Zeichen
Halte es einfach :)
quelle
print Hello World
Fragen sind eigentlichwho can submit a HQ9+ answer faster
Fragen.C 192 Zeichen
Da dies kein Golfspiel ist, habe ich mich entschlossen, Spaß zu haben und zu versuchen, jeden Charakter genau zweimal zu verwenden (während ich so wenig wie möglich in einen Kommentar einfügte, weil das langweilig ist). Mir ist klar, dass ich es nicht besonders gut gemacht habe, da mein Code auch eine Menge langweiligen "toten" Codes enthält (nicht im wörtlichen Sinne, sondern im Sinne von Platzhalterzeichen, die nur verwendet werden, um die Anforderung zu erfüllen). Wie auch immer, das war überraschend schwer (aber lustig) mit der Beschränkung auf zwei Zeichen, so dass ich mir leider nichts Interessanteres einfallen lassen konnte. Es gab mir eine Idee für ein neues Problem ...
(Aktualisiert per @ ugorens Kommentar.)
quelle
.
indem Sie sie für Brüche verwenden. Sie können auch ein Array deklarieren und verwenden[]
..
; Ich habe nur darüber nachgedacht, es für den Strukturzugriff zu verwenden. <s> In Bezug auf Array-Deklarationen habe ich,
aufgrund desprintf
Aufrufs;
keine Daten mehr und auch keine Daten. Daher bin ich mir nicht sicher, wie ich eine deklarieren könnte. </ s> Duh, ich könnte sie ersetzenATION_
. ..Vim-Befehl (18 Tastenanschläge)
iHe
Esc3al
Escio Wor
Rightd!
EnterWiederholt keinen Tastendruck mehr als zweimal.
Es verstößt ein bisschen gegen die "Benutzereingabe" -Regel, da es immer noch der Benutzer ist, der diese Sequenz eingeben muss, aber ich nehme an, wenn Sie es vorher als Makro oder als Nicht-Map speichern, würde es zählen, da Sie es nur ausführen, ohne es explizit zu tun Eingabe, um es zu verwirklichen.
Es muss außerdem
nocompatible
festgelegt werden, dass externe Ressourcen möglicherweise verwendet werden. Daher habe ich nachfolgend eine weitere Variation bereitgestellt:Vim-Befehl (21 Tastenanschläge)
iHe
Esc3al
Escio Wor
Ctrl+[$ad!
EnterDiese Variante muss nicht
nocompatible
festgelegt werden, obwohl sie Escdreimal verwendet wird, indem sie Ctrl+[an ihrer Stelle verwendet wird.quelle
Right
,Esc
undEnter
sind sie nicht wörtlich diese Zeichen. Vim handelt mit Tastenanschlägen, die ich für die Zwecke dieses Wettbewerbs als Zeichen gleichwertig erachte (und die Regel "nicht mehr als zweimal wiederholen"). Ich benutze deni
Tastenanschlag nur zweimal und den<Right>
Tastenanschlag nur einmal. WasE
, ich benutze es überhaupt nicht - aber ich verwende<Esc>
zweimal und<Enter>
einmal.l
s.:set nocompatible
.Right
nicht sehr vim-y.Piet-- Keine Charaktere!
quelle
Perl, 29 Zeichen
Diese Antwort enthält x-bewertete Clogs!
Perl, 23 Zeichen
Kürzere, aber keine Pornoschuhe. :-( Die gleiche Grundidee ...
Perl, 20 Zeichen
Langweilig...
quelle
Powershell, 20
quelle
Sclipting , 11 Zeichen
Ich habe dieses wunderschöne HelloWorld- Programm auf der Hello World-Programmliste von esolang gesehen .
quelle
Scala:
3429 ZeichenIch bin stolz auf mich:
Es war wirklich schwierig, doppelte Anführungszeichen und Klammern zu überwinden. Dann entdeckte ich die alte Java-
printf
Funktion, mit der Zahlen in Buchstaben umgewandelt werden können, wenn der%c
Formatbezeichner angegeben wird.Aktualisieren
MrWonderful hat eine wundervolle Sache gemacht, indem er darauf hingewiesen hat, dass eine ganze Reihe von Zeichen gespeichert werden können, indem mein zweites "l" manuell in der Zeichenfolge verwendet wird!
quelle
printf
enthält ar
wie es tutworld
. Gleiches gilt für deno
mehrmals verwendeten Buchstaben . Dies basiert auf meiner Interpretation der folgenden Anweisung aus dem OP "Ein Beispiel für ein ungültiges Python-Programm (das Zeichen 'r' wird dreimal verwendet):print("Hel"+chr(108)+'o world!')
"chr
Python 3 [38 Bytes]
Ich würde nicht
import __hello__
als externe Ressource betrachten.quelle
Perl: 34 Zeichen
Probelauf:
(Keine große Sache. Wird nur gepostet, um in meinem Leben mindestens einmal
s///
mit diesen schicken Begrenzern verwendet zu werden.)quelle
PHP, 33 Zeichen
Ich finde es einfach toll, wie viel PHP verzeiht und versteht!
Bevor es gelöscht wurde (oder wenn es noch da ist, bin ich total blind), sah ich einen Kommentar mit der Aufschrift "No brainf * ck?: D". Wie Sie wissen, ist es so gut wie unmöglich, eine Lösung in BrainF * ck zu schreiben. Aber ich habe es geschafft, dies nur für den Lulz zu codieren.
Wenn Sie keinen BF-Interpreter haben, gibt der obige Code nur den PHP-Interpreter aus: P
quelle
Hel
ist nicht von Anführungszeichen umgeben. Ich habe auch noch nie davon gehörtstr_rot13
..
), indem Sie dieHel
vor die setzen<?=
.Hel<?=str_rot13("yb jbe")?>ld!
HTML Fiddle - 21 Zeichen
quelle
\n
also würde ich sagen,<br>
zähltr
wiederholt sich in der Lösung. Habe ich die Anforderungen falsch interpretiert?Ruby: 27 Zeichen
Probelauf:
Ruby: 25 Zeichen
(Basierend auf Vaches Kommentar.)
Ruby: 23 Zeichen
(Kopie der Powershell- Antwort von Danko Durbić .)
quelle
puts 'He'+'l'*2+'o world!'
ist ein Zeichen kürzer!puts"He#{?l*2}o world!"
p
enthält Anführungszeichen in der Ausgabe. Ich halte mich lieber strikt an das gewünschte Ausgabeformat. Aber Sie haben Recht, der Platz wird nicht benötigt. Danke.JavaScript, 66 Zeichen
Inspiriert von FireFly wird jedes von diesem Code verwendete Zeichen genau zweimal verwendet.
quelle
C - 43 Zeichen
Ausgabe
Zeichenanzahl
quelle
main
etci
).JavaScript [37 Bytes]
Zu primitiv, nicht wahr?
quelle
nginx.conf
In Aktion:
quelle
set
. Dies hat jetzt nur 3 Leerzeichen, von denen eines ein Tab sein könnte!Emacs-Befehl (15 Tastenanschläge)
Wenn diese vim Antwort legal ist, muss dies auch sein :)
Spaß beiseite, Makro kann es auch werden :)
Abgesehen von mehr Quatsch kann ich wahrscheinlich noch etwas mehr quetschen, aber das scheint vorerst gut genug zu sein (da es besser ist als vim).
PS, bitte ignoriere all meinen Unsinn (ich benutze (selten, aber) auch vim!).
quelle
Befunge 98
Hier ist eine Version, in der jedes Zeichen zweimal vorkommt.
Lässt einen Haufen Müll auf dem Stapel.
Als Bonus hat jeder einzelne Charakter von der IP etwas damit zu tun.
quelle
Malbolge
quelle
Hello, world.
anstattHello world!\n
:( Versuchen Sie es online! Beeindruckend, aber ungültig.Eigentlich betrüge ich nicht gerne: P
Python
quelle
TypeError
.print("!dlrow os%eH"[::-1]%('l'*2))
arbeiten in beiden Versionen (Python2 und Py3K).GolfScript
Ersetzt zwei Zeilenumbrüche (zum Glück wird der dritte, der für die Ersetzung benötigt wird, vom eingebauten System bereitgestellt
n
), wobei beide Arten von Zeichenfolgenliteral verwendet werden, um vierfache Kopien eines Anführungszeichens zu vermeiden. Dal
es das einzige Zeichen ist, das mehr als zweimal in der Originalzeichenfolge vorkommt, ist es nicht zu schwer.quelle
o
. Die Regeln besagen, dass ein Charakter nicht mehr als zweimal verwendet werden darf .Hmm.
In C können wir nach diesen Regeln nur einen
#define
(wegeni
undn
) und höchstens zwei Funktionsaufrufe ODER-Definitionen ((
und)
) haben.Ich nehme an, dass es so ziemlich nur einen Weg gibt, es zu tun (obwohl ich mich wahrscheinlich irre):
quelle
puts()
anstelle von verwendenprintf()
.o
inworld
?BASH
Cred @manatwork
quelle
-e
indem Sie die spezielle$'…'
Syntax:echo $'Hel\x6c\x6f world!'
.C - 46 Zeichen
main(){printf("He%clo wor%cd!\x0d",'l',108);}
Druckt aus:
quelle
main(){printf("He%clo world!%c",108,10);}
sollte funktionieren und sich ein paar Zeichen sparen.Fuge
Aus dem Esolang-Wiki:
Und Sie können den Quellcode anhören .
quelle
PHP
32 Zeichen
Beachten Sie, dass ich ein Zeichen nicht öfter als zweimal verwende, da l! = L
Beachten Sie auch, dass trotz des Löschens von Stack Overflow in der Darstellung nach dem ein Zeilenumbruch auftritt
!
.quelle
XQuery, 19 Zeichen
quelle