Самая короткая программа 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...


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)


Это блестящее решение. +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'действителен рубиновый код
Кристиан Лупаску
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.