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.