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!


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.


15

C # 85-Zeichen

class H{static void Main(){if(System.Console.Out.WriteAsync("Hello, world!")is H){}}}

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)


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.


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){}}}

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.