Programma Hello World più breve senza punti e virgola


14

Di recente ho visto alcune domande su SO che mi chiedevano se fosse possibile creare un programma Hello World senza usare punti e virgola usando C #. La sfida è farlo di nuovo, ma nella più breve quantità possibile di codice!


3
Presumo che si tratti di una sfida specifica per la lingua? Altrimenti ci sono molte lingue in cui questo compito sarebbe banale. (Ad esempio, 'Hello World'è un programma GolfScript valido che stampa Hello World. Anche se HQ9 + lo batterà facilmente.)
Ilmari Karonen,

@llmari Siamo spiacenti, ho una domanda aggiornata. Lo avrei taggato in C # ma non esiste e non ho il rappresentante per crearlo, grazie.
Bali C,

Risposte:


12

C #, 76

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

Ho provato questo nel mio VS2012 e funziona benissimo, anche se è abbastanza sorprendente che tu possa applicare l' isoperatore a void...


15

Caratteri C # 85

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

Quale versione .NET è questa? .NET 4 non sembra contenere una definizione per TextWriter.WriteAsync ().
primo

3
@primo .NET 4.5 lo fa.
Bob,

12

C # (114)

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

Si noti che l'indice corretto per Write(string)/ WriteLine(string)potrebbe essere diverso nel sistema in uso. Tuttavia, poiché ci sono solo 106 metodi in totale, ne sono quasi certo Write(string)o WriteLine(string)sarà un numero indice di due cifre su ogni sistema, quindi il conteggio dei caratteri dovrebbe essere generalmente valido.

Demo: http://ideone.com/5npky (il Writemetodo è apparentemente indice 23 qui)


Questa soluzione è geniale. +1
primo

Ho anche pensato che fosse ironico che dopo averlo messo insieme, è uscito esattamente 1 personaggio più corto del tuo :)
mellamokb,

7
Può salvare tre caratteri cambiando nullin 0. Ottieni un bel conteggio dei personaggi di 111 :)
Timwi,

8

115 byte

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

Probabilmente è possibile produrre qualcosa di più breve, ma sono abbastanza sicuro che dovrai fare una sorta di chiamata asincrona.


4

C # 96 95 94 caratteri

Un po 'un trucco, ma funziona se hai installato IronRuby:

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

2
È possibile salvare 1 carattere sostituendolo ==con un operatore di confronto di un carattere.
Peter Taylor,

@PeterTaylor Ho aggiornato il codice. Grazie per questo fantastico suggerimento!
Cristian Lupascu,

Ho anche rimosso lo spazio tra putse la stringa. puts'Hello World'è un codice rubino valido
Cristian Lupascu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.