El programa Hello World más corto sin punto y coma

14

Recientemente vi algunas preguntas sobre SO que preguntaban si podía hacer un programa Hello World sin usar ningún punto y coma con C #. El desafío es hacer esto nuevamente, ¡pero con la menor cantidad de código posible!

Bali C
fuente
3
¿Asumo que esto debe ser un desafío específico del idioma? De lo contrario, hay muchos idiomas en los que esta tarea sería trivial. (Por ejemplo, 'Hello World'es un programa válido de GolfScript que imprime Hello World. Aunque HQ9 + lo superará fácilmente).
Ilmari Karonen
@llmari Lo siento, sí, he actualizado la pregunta. Lo habría etiquetado como C # pero no existe y no tengo el representante para crearlo, gracias.
Bali C

Respuestas:

12

C #, 76

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

Probé esto en mi VS2012 y funciona bien, aunque es una sorpresa que puedas aplicar el isoperador a void...

Timwi
fuente
15

C # 85 caracteres

class H{static void Main(){if(System.Console.Out.WriteAsync("Hello, world!")is H){}}}
mizer
fuente
¿Qué versión de .NET es esta? .NET 4 no parece contener una definición para TextWriter.WriteAsync ().
primo
3
@primo .NET 4.5 lo hace.
Bob
12

C # (114)

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

Tenga en cuenta que el índice adecuado para Write(string)/ WriteLine(string)puede ser diferente en su sistema. Sin embargo, ya que sólo hay 106 métodos totales, estoy casi seguro, ya sea Write(string)o WriteLine(string)será un número de índice de dos dígitos en todos los sistemas, por lo que el recuento de caracteres debe ser generalmente válida.

Demostración: http://ideone.com/5npky (el Writemétodo aparentemente es el índice 23 aquí)

mellamokb
fuente
Esta solución es brillante. +1
primo
Yo también pensaba que era irónico que después de poner juntos, que salió exactamente 1 carácter más corto que el suyo :)
mellamokb
77
Puede guardar tres caracteres cambiando nulla 0. Obtenga un buen recuento de personajes de 111 :)
Timwi
8

115 bytes

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

Es probable que sea posible producir algo un poco más corto, pero estoy bastante seguro de que necesitará hacer algún tipo de llamada asincrónica.

primo
fuente
4

C # 96 95 94 caracteres

Un poco tramposo, pero funciona si tienes instalado IronRuby:

class P{static void Main(){if(IronRuby.Ruby.CreateEngine().Execute("puts'Hello World'")>1){}}}
Cristian Lupascu
fuente
2
Puede guardar 1 carácter reemplazando ==con un operador de comparación de un carácter.
Peter Taylor
@PeterTaylor He actualizado el código. Gracias por esta gran sugerencia!
Cristian Lupascu
También eliminé el espacio entre putsy la cadena. puts'Hello World'es válido código ruby
Cristian Lupascu