Найкоротша програма 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 :)
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 char, замінивши ==оператора порівняння з одним символом.
Пітер Тейлор

@PeterTaylor Я оновив код. Дякуємо за цю чудову пропозицію!
Крістіан Лупаску

Я також видалив пробіл між putsі рядком. puts'Hello World'дійсний код рубіну
Крістіан Лупаску
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.