Kürzeste Hello World-Sendung ohne Semikolon

14

Ich habe kürzlich einige Fragen zu SO gesehen, in denen Sie gefragt wurden, ob Sie mit C # ein Hello World-Programm erstellen können, ohne Semikolons zu verwenden. Die Herausforderung besteht darin, dies erneut zu tun, jedoch mit der geringstmöglichen Menge an Code!

Bali C
quelle
3
Ich gehe davon aus, dass dies eine sprachspezifische Herausforderung sein soll. Ansonsten gibt es viele Sprachen, in denen diese Aufgabe trivial wäre. (Zum Beispiel 'Hello World'ist ein gültiges GolfScript-Programm, das druckt Hello World. Obwohl HQ9 + es leicht schlagen wird.)
Ilmari Karonen
@llmari Sorry, ja, ich habe die Frage aktualisiert. Ich hätte es mit C # markiert, aber es existiert nicht und ich habe nicht den Repräsentanten, um es zu erstellen, danke.
Bali C

Antworten:

12

C # 76

class X{static void Main(){if(System.Console.Write("Hello, World!")is X){}}}

Ich habe dies in meinem VS2012 versucht und es funktioniert einwandfrei, obwohl es eine große Überraschung ist, dass Sie den isOperator auf void... anwenden können.

Timwi
quelle
15

C # 85-Zeichen

class H{static void Main(){if(System.Console.Out.WriteAsync("Hello, world!")is H){}}}
Mizer
quelle
Welche .NET-Version ist das? .NET 4 scheint keine Definition für TextWriter.WriteAsync () zu enthalten.
Primo
3
@primo .NET 4.5 funktioniert.
Bob
12

C # (114)

class M{static void Main(){if(typeof(System.Console).GetMethods()[78].Invoke(null,new[]{"Hello, world!"})is M){}}}

Beachten Sie, dass der richtige Index für Write(string)/ WriteLine(string)auf Ihrem System unterschiedlich sein kann. Da es jedoch insgesamt nur 106 Methoden gibt, bin ich mir entweder Write(string)oder fast sicherWriteLine(string) wird eine zweistellige Indexnummer auf jedem System sein, so dass die Anzahl der Zeichen im Allgemeinen gültig sein sollte.

Demo: http://ideone.com/5npky ( WriteMethode ist anscheinend Index 23 hier)

mellamokb
quelle
Diese Lösung ist brillant. +1
Primo
Ich fand es auch ironisch, dass nach dem Zusammensetzen genau 1 Zeichen kürzer als deins
herauskam
7
Kann durch Ändern nullvon drei Zeichen speichern 0.
Erhalte
8

115 Bytes

class H{static void Main(){if(((System.Action)(()=>System.Console.Write("Hello, world!"))).DynamicInvoke()is H){}}}

Es ist wahrscheinlich möglich, etwas kürzeres zu produzieren, aber ich bin mir ziemlich sicher, dass Sie einen asynchronen Anruf tätigen müssen.

primo
quelle
4

C # 96 95 94 Zeichen

Ein kleiner Schummel, funktioniert aber, wenn Sie IronRuby installiert haben:

class P{static void Main(){if(IronRuby.Ruby.CreateEngine().Execute("puts'Hello World'")>1){}}}
Cristian Lupascu
quelle
2
Sie können 1 ==Zeichen sparen, indem Sie es durch einen Vergleichsoperator mit einem Zeichen ersetzen .
Peter Taylor
@ PeterTaylor Ich habe den Code aktualisiert. Vielen Dank für diesen tollen Vorschlag!
Cristian Lupascu
Ich habe auch das Leerzeichen zwischen putsund der Zeichenfolge entfernt. puts'Hello World'ist gültiger Ruby-Code
Cristian Lupascu