Program Hello World terpendek tanpa titik koma

14

Baru-baru ini saya melihat beberapa pertanyaan di SO yang menanyakan apakah Anda bisa membuat program Hello World tanpa menggunakan titik koma apa pun menggunakan C #. Tantangannya adalah melakukan ini lagi, tetapi dalam jumlah kode sesingkat mungkin!

Bali C
sumber
3
Saya menganggap ini dimaksudkan sebagai tantangan khusus bahasa? Kalau tidak, ada banyak bahasa di mana tugas ini sepele. (Misalnya, 'Hello World'adalah program GolfScript yang valid yang mencetak Hello World. Meskipun HQ9 + akan dengan mudah mengalahkannya.)
Ilmari Karonen
@ lmari Maaf, ya, saya telah memperbarui pertanyaan. Saya akan menandai itu C # tetapi tidak ada dan saya tidak memiliki perwakilan untuk membuatnya, terima kasih.
Bali C

Jawaban:

12

C #, 76

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

Saya mencoba ini di VS2012 saya dan berfungsi dengan baik, meskipun cukup mengejutkan bahwa Anda dapat menerapkan isoperator ke void...

Timwi
sumber
15

C # 85 karakter

class H{static void Main(){if(System.Console.Out.WriteAsync("Hello, world!")is H){}}}
mizer
sumber
Versi NET mana ini? .NET 4 tampaknya tidak mengandung definisi untuk TextWriter.WriteAsync ().
primo
3
@ premo . NET 4.5 tidak.
Bob
12

C # (114)

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

Perhatikan bahwa indeks yang tepat untuk Write(string)/ WriteLine(string)mungkin berbeda pada sistem Anda. Namun, karena hanya ada 106 metode total, saya hampir pasti Write(string)atau WriteLine(string)akan menjadi nomor indeks dua digit pada setiap sistem, sehingga jumlah karakter harus secara umum valid.

Demo: http://ideone.com/5npky ( Writemetode ini rupanya indeks 23 di sini)

mellamokb
sumber
Solusi ini brilian. +1
primo
Saya juga berpikir adalah ironis bahwa setelah menggabungkannya, keluar tepat 1 karakter lebih pendek dari Anda :)
mellamokb
7
Dapat menyimpan tiga karakter dengan mengubah nullke 0. Dapatkan jumlah karakter yang bagus dari 111 :)
Timwi
8

115 Bytes

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

Kemungkinan untuk menghasilkan sesuatu yang sedikit lebih pendek, tetapi saya cukup yakin bahwa Anda akan perlu melakukan semacam panggilan tidak sinkron.

primo
sumber
4

C # 96 95 94 karakter

Sedikit curang, tetapi berfungsi jika Anda menginstal IronRuby:

class P{static void Main(){if(IronRuby.Ruby.CreateEngine().Execute("puts'Hello World'")>1){}}}
Cristian Lupascu
sumber
2
Anda dapat menghemat 1 karakter dengan mengganti ==dengan operator perbandingan satu karakter.
Peter Taylor
@PeterTaylor Saya telah memperbarui kode. Terima kasih atas saran yang bagus ini!
Cristian Lupascu
Saya juga menghapus ruang di antara putsdan string. puts'Hello World'adalah kode ruby ​​yang valid
Cristian Lupascu