最短的Hello World程序,无分号


14

我最近在SO上看到了一些问题,询问您是否可以在不使用C#的情况下使用半分号的情况下制作Hello World程序。面临的挑战是要再次执行此操作,但要用尽可能短的代码!


3
我认为这意味着特定于语言的挑战?否则,许多语言将使这项任务变得微不足道。(例如,这'Hello World'是一个有效的GolfScript程序,可以打印Hello World。尽管HQ9 +可以轻松击败它。)
Ilmari Karonen 2012年

@llmari对不起,是的,我已经更新了问题。我会标记它为C#,但是它不存在,并且我没有代表来创建它,谢谢。
巴厘岛C

Answers:


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 2012年

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/5npkyWrite此处的方法显然是索引23)


该解决方案非常出色。+1
primo 2012年

我也觉得具有讽刺意味的是,将它们放在一起后,它比您的字符短了1个字符:)
mellamokb '04

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个字符。
彼得·泰勒

@PeterTaylor我已经更新了代码。感谢您的好建议!
克里斯蒂安·卢帕斯库

我还删除puts了字符串之间的空格。puts'Hello World'是有效的红宝石代码
Cristian Lupascu 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.