โปรแกรม Hello World สั้นที่สุดโดยไม่มีเครื่องหมายทวิภาค


14

ฉันเพิ่งเห็นคำถามบางอย่างเกี่ยวกับ SO ที่ถามว่าคุณสามารถสร้างโปรแกรม Hello World โดยไม่ต้องใช้เซมิโคลอนใด ๆ โดยใช้ C # ความท้าทายคือการทำเช่นนี้อีกครั้ง แต่ในจำนวนที่สั้นที่สุดของรหัสที่เป็นไปได้!


3
ฉันถือว่านี่เป็นความท้าทายเฉพาะภาษาหรือไม่ ไม่อย่างนั้นมีภาษามากมายที่งานนี้จะไม่สำคัญ (ตัวอย่างเช่น'Hello World'เป็นโปรแกรม GolfScript ที่ถูกต้องที่พิมพ์Hello Worldแม้ว่าHQ9 +จะเอาชนะได้ง่าย)
Ilmari Karonen

@llmari ขออภัยฉันได้อัปเดตคำถามแล้ว ฉันจะติดแท็ก C # แต่มันไม่มีอยู่และฉันไม่มีตัวแทนในการสร้างขอบคุณ
บาหลี C

คำตอบ:


12

C #, 76

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

ฉันลองสิ่งนี้ใน VS2012 ของฉันและใช้งานได้ดีแม้ว่ามันจะค่อนข้างแปลกใจที่คุณสามารถใช้isโอเปอเรเตอร์กับvoid...


15

C # 85 ตัวอักษร

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

รุ่นใด. NET นี้ .NET 4ดูเหมือนจะไม่มีคำจำกัดความสำหรับ TextWriter.WriteAsync ()
primo

3
@primo .NET 4.5ทำ
บ๊อบ

12

C # (114)

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

โปรดทราบว่าดัชนีที่เหมาะสมสำหรับWrite(string)/ WriteLine(string)อาจแตกต่างกันในระบบของคุณ อย่างไรก็ตามเนื่องจากมีเพียง 106 วิธีเท่านั้นฉันเกือบจะแน่ใจWrite(string)หรือWriteLine(string)จะเป็นตัวเลขดัชนีสองหลักในทุกระบบดังนั้นการนับจำนวนตัวอักษรจึงควรจะถูกต้อง

ตัวอย่าง: http://ideone.com/5npky ( Writeเห็นได้ชัดว่าวิธีการคือดัชนี 23 ที่นี่)


วิธีนี้ยอดเยี่ยม +1
โม่

ผมยังคิดว่ามีเป็นเรื่องน่าขันว่าหลังจากที่วางไว้ด้วยกันก็ออกมาว่า 1 ตัวละครสั้นกว่าของคุณ :)
mellamokb

7
สามารถบันทึกตัวละครทั้งสามโดยการเปลี่ยนไปnull 0รับจำนวนตัวละครที่ดีจาก 111 :)
Timwi

8

115 ไบต์

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

เป็นไปได้ที่จะสร้างบางสิ่งให้สั้นลง แต่ฉันค่อนข้างแน่ใจว่าคุณจะต้องทำการโทรแบบอะซิงโครนัส


4

C # 96 95 94 ตัวอักษร

โกงเล็กน้อย แต่ใช้ได้ถ้าคุณติดตั้ง IronRuby:

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

2
คุณสามารถบันทึก 1 อักขระโดยแทนที่==ด้วยตัวดำเนินการเปรียบเทียบอักขระเดียว
Peter Taylor

@PeterTaylor ฉันได้อัปเดตรหัสแล้ว ขอบคุณสำหรับคำแนะนำที่ยอดเยี่ยมนี้!
Cristian Lupascu

ฉันยังลบช่องว่างระหว่างputsและสตริง puts'Hello World'เป็นรหัสทับทิมที่ถูกต้อง
Cristian Lupascu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.