14
\$\begingroup\$

I recently saw some questions on SO that asked if you could make a Hello World program without using any semi colons using C#. The challenge is to do this again, but in the shortest amount of code possible!

\$\endgroup\$
  • 3
    \$\begingroup\$ I assume this is meant to be a language-specific challenge? Otherwise there are plenty of languages where this task would be trivial. (For example, 'Hello World' is a valid GolfScript program that prints Hello World. Although HQ9+ will easily beat it.) \$\endgroup\$ – Ilmari Karonen Apr 17 '12 at 14:51
  • \$\begingroup\$ @llmari Sorry, yes, I have updated question. I would have tagged it C# but it doesn't exist and I don't have the rep to create it, thanks. \$\endgroup\$ – Bali C Apr 17 '12 at 15:41
12
\$\begingroup\$

C#, 76

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

I tried this in my VS2012 and it works just fine, even though it is quite a surprise that you can apply the is operator to void...

\$\endgroup\$
15
\$\begingroup\$

C# 85 chars

class H{static void Main(){if(System.Console.Out.WriteAsync("Hello, world!")is H){}}}
\$\endgroup\$
  • \$\begingroup\$ Which .NET version is this? .NET 4 doesn't seem to contain a definition for TextWriter.WriteAsync(). \$\endgroup\$ – primo Apr 26 '12 at 6:45
  • 3
    \$\begingroup\$ @primo .NET 4.5 does. \$\endgroup\$ – Bob Apr 26 '12 at 10:58
12
\$\begingroup\$

C# (114)

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

Note that the proper index for Write(string)/WriteLine(string) may be different on your system. However, since there are only 106 methods total, I'm almost certain either Write(string) or WriteLine(string) will be a two-digit index number on every system, so the character count should be generally valid.

Demo: http://ideone.com/5npky (Write method is apparently index 23 here)

\$\endgroup\$
  • \$\begingroup\$ This solution is brilliant. +1 \$\endgroup\$ – primo Apr 22 '12 at 10:40
  • \$\begingroup\$ I also thought is was ironic that after putting it together, it came out exactly 1 character shorter than yours :) \$\endgroup\$ – mellamokb Apr 23 '12 at 17:25
  • 7
    \$\begingroup\$ Can save three characters by changing null to 0. Get a nice character count of 111 :) \$\endgroup\$ – Timwi Aug 3 '13 at 9:02
8
\$\begingroup\$

115 Bytes

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

It's likely possible to produce something a bit shorter, but I'm pretty sure that you're going to need make some sort of asynchronous call.

\$\endgroup\$
4
\$\begingroup\$

C# 96 95 94 chars

A bit of a cheat, but works if you have IronRuby installed:

class P{static void Main(){if(IronRuby.Ruby.CreateEngine().Execute("puts'Hello World'")>1){}}}
\$\endgroup\$
  • 2
    \$\begingroup\$ You can save 1 char by replacing == with a one-character comparison operator. \$\endgroup\$ – Peter Taylor Apr 19 '12 at 9:42
  • \$\begingroup\$ @PeterTaylor I've updated the code. Thanks for this great suggestion! \$\endgroup\$ – Cristian Lupascu Apr 19 '12 at 9:47
  • \$\begingroup\$ I also removed the space between puts and the string. puts'Hello World' is valid ruby code \$\endgroup\$ – Cristian Lupascu Apr 19 '12 at 9:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.