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!


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


15

C # 85 karakter

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

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)


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.


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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.