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!


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...


15

Caractères C # 85

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

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)


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.


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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.