Самая короткая программа Hello World без двоеточий

14

Недавно я увидел несколько вопросов о SO, в которых задавался вопрос, можете ли вы создать программу Hello World без использования точек с запятой с помощью C #. Задача состоит в том, чтобы сделать это снова, но в кратчайшем объеме кода!

Бали С
источник
3
Я предполагаю, что это предназначено для конкретного языкового вызова? В противном случае существует множество языков, где эта задача будет тривиальной. (Например, 'Hello World'это действительная программа GolfScript, которая печатает Hello World. Хотя HQ9 + легко победит ее.)
Илмари Каронен
@llmari Извините, да, я обновил вопрос. Я бы пометил это как C #, но его не существует, и у меня нет представителя для его создания, спасибо.
Бали C

Ответы:

12

C #, 76

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

Я пробовал это в моем VS2012, и он работает просто отлично, хотя это довольно удивительно, что вы можете применить isоператор к void...

Timwi
источник
15

C # 85 символов

class H{static void Main(){if(System.Console.Out.WriteAsync("Hello, world!")is H){}}}
мизер
источник
Какая версия .NET это? .NET 4 , похоже, не содержит определения для TextWriter.WriteAsync ().
Прим
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)

mellamokb
источник
Это блестящее решение. +1
прим
Я также подумал, что это было иронично, что после того, как собрать его вместе, он получился ровно на 1 символ короче вашего :)
mellamokb
7
Можно сохранить три символа, изменив nullна 0. Получить хороший счет персонажа 111 :)
Тимви
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'действителен рубиновый код
Кристиан Лупаску