Programme Hello World le plus court sans point-virgule

14

J'ai récemment vu quelques questions sur SO qui demandaient si vous pouviez créer un programme Hello World sans utiliser de points-virgules en C #. Le défi est de recommencer, mais avec le moins de code possible!

Bali C
la source
3
Je suppose que cela est censé être un défi spécifique à la langue? Sinon, il y a beaucoup de langues où cette tâche serait triviale. (Par exemple, 'Hello World'est un programme GolfScript valide qui imprime Hello World. Bien que HQ9 + le battra facilement.)
Ilmari Karonen
@llmari Désolé, oui, j'ai mis à jour la question. Je l'aurais tagué C # mais il n'existe pas et je n'ai pas le représentant pour le créer, merci.
Bali C

Réponses:

12

C #, 76

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

J'ai essayé cela dans mon VS2012 et cela fonctionne très bien, même s'il est assez surprenant que vous puissiez appliquer l' isopérateur à void...

Timwi
la source
15

Caractères C # 85

class H{static void Main(){if(System.Console.Out.WriteAsync("Hello, world!")is H){}}}
mizer
la source
De quelle version .NET s'agit-il? .NET 4 ne semble pas contenir de définition pour TextWriter.WriteAsync ().
primo
3
@primo .NET 4.5 le fait.
Bob
12

C # (114)

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

Notez que l'index approprié pour Write(string)/ WriteLine(string)peut être différent sur votre système. Cependant, comme il n'y a que 106 méthodes au total, je suis presque certain que ce sera Write(string)ou WriteLine(string)sera un numéro d'index à deux chiffres sur chaque système, donc le nombre de caractères devrait être généralement valide.

Démo: http://ideone.com/5npky (la Writeméthode est apparemment l'index 23 ici)

mellamokb
la source
Cette solution est géniale. +1
primo
J'ai aussi pensé qu'il était ironique qu'après l'avoir assemblé, il soit sorti exactement 1 caractère de moins que le vôtre :)
mellamokb
7
Peut enregistrer trois caractères en passant nullà 0. Obtenez un joli nombre de personnages de 111 :)
Timwi
8

115 octets

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

Il est probablement possible de produire quelque chose d'un peu plus court, mais je suis sûr que vous allez avoir besoin de faire une sorte d'appel asynchrone.

primo
la source
4

C # 96 95 94 caractères

Un peu de triche, mais fonctionne si vous avez installé IronRuby:

class P{static void Main(){if(IronRuby.Ruby.CreateEngine().Execute("puts'Hello World'")>1){}}}
Cristian Lupascu
la source
2
Vous pouvez enregistrer 1 caractère en le remplaçant ==par un opérateur de comparaison à un caractère.
Peter Taylor
@PeterTaylor J'ai mis à jour le code. Merci pour cette excellente suggestion!
Cristian Lupascu
J'ai également supprimé l'espace entre putset la chaîne. puts'Hello World'est un code rubis valide
Cristian Lupascu