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!
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...
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.
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.
'Hello World'
est un programme GolfScript valide qui imprimeHello World
. Bien que HQ9 + le battra facilement.)Réponses:
C #, 76
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'
is
opérateur àvoid
...la source
Caractères C # 85
la source
C # (114)
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 seraWrite(string)
ouWriteLine(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
Write
méthode est apparemment l'index 23 ici)la source
null
à0
. Obtenez un joli nombre de personnages de 111 :)115 octets
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.
la source
C #
969594 caractèresUn peu de triche, mais fonctionne si vous avez installé IronRuby:
la source
==
par un opérateur de comparaison à un caractère.puts
et la chaîne.puts'Hello World'
est un code rubis valide