Programa Hello World mais curto, sem ponto e vírgula


14

Recentemente, vi algumas perguntas no SO que perguntavam se você poderia criar um programa Hello World sem usar ponto e vírgula usando C #. O desafio é fazer isso novamente, mas com a menor quantidade de código possível!


3
Presumo que isso seja um desafio específico ao idioma? Caso contrário, há muitos idiomas em que essa tarefa seria trivial. (Por exemplo, 'Hello World'é um programa GolfScript válido que imprime Hello WorldEmbora. HQ9 + será fácil vencê-lo.)
Ilmari Karonen

@llmari Desculpe, sim, eu atualizei a pergunta. Eu o teria marcado em C #, mas ele não existe e não tenho o representante para criá-lo, obrigado.
Bali C

Respostas:


12

C #, 76

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

Eu tentei isso no meu VS2012 e funciona muito bem, mesmo que seja uma surpresa poder aplicar o isoperador ao void...


15

Caracteres C # 85

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

Qual versão do .NET é essa? O .NET 4 parece não conter uma definição para TextWriter.WriteAsync ().
Primo

3
@primo .NET 4.5 faz.
26412 Bob

12

C # (114)

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

Observe que o índice adequado para Write(string)/ WriteLine(string)pode ser diferente no seu sistema. No entanto, como existem apenas 106 métodos no total, tenho quase certeza Write(string)ou WriteLine(string)haverá um número de índice de dois dígitos em todos os sistemas, portanto a contagem de caracteres deve ser geralmente válida.

Demonstração: http://ideone.com/5npky (o Writemétodo aparentemente é o índice 23 aqui)


Esta solução é brilhante. +1
primo

Eu também pensei que era irônico que, depois de colocá-lo juntos, ele saiu exatamente 1 carácter mais curto do que seu :)
mellamokb

7
Pode salvar três caracteres mudando nullpara 0. Obter uma contagem de caracteres agradável de 111 :)
Timwi

8

115 bytes

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

Provavelmente é possível produzir algo um pouco mais curto, mas tenho certeza de que você precisará fazer algum tipo de chamada assíncrona.


4

C # 96 95 94 caracteres

Um pouco de trapaça, mas funciona se você tiver o IronRuby instalado:

class P{static void Main(){if(IronRuby.Ruby.CreateEngine().Execute("puts'Hello World'")>1){}}}

2
Você pode salvar 1 caractere substituindo ==por um operador de comparação de um caractere.
Peter Taylor

@PeterTaylor Atualizei o código. Obrigado por esta ótima sugestão!
Cristian Lupascu

Também removi o espaço entre putse a corda. puts'Hello World'é código Ruby válido
Cristian Lupascu
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.