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!


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


15

C # 85 caracteres

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

¿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í)


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.


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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.