Najkrótszy program Hello World bez średników


14

Niedawno widziałem kilka pytań na temat SO, które zadały pytanie, czy możesz stworzyć program Hello World bez użycia średników za pomocą C #. Wyzwanie polega na zrobieniu tego ponownie, ale przy możliwie jak najkrótszym kodzie!


3
Zakładam, że ma to być wyzwanie specyficzne dla języka? W przeciwnym razie istnieje wiele języków, w których to zadanie byłoby banalne. (Na przykład 'Hello World'jest to prawidłowy program do drukowania w GolfScript Hello World. Chociaż HQ9 + z łatwością go pokona.)
Ilmari Karonen,

@llmari Przepraszamy, tak, zaktualizowałem pytanie. Oznacziłbym go jako C #, ale nie istnieje i nie mam przedstawiciela, który mógłby go utworzyć, dzięki.
Bali C

Odpowiedzi:


12

C #, 76

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

Próbowałem tego w moim VS2012 i działa dobrze, mimo że jest dość niespodzianką, że można zastosować isoperatora do void...


15

Znaki C # 85

class H{static void Main(){if(System.Console.Out.WriteAsync("Hello, world!")is H){}}}

Która to wersja .NET? .NET 4 nie wydaje się zawierać definicji TextWriter.WriteAsync ().
primo

3
@primo .NET 4.5 robi.
Bob

12

C # (114)

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

Zauważ, że właściwy indeks dla Write(string)/ WriteLine(string)może być inny w twoim systemie. Jednakże, ponieważ istnieją tylko 106 Metody sumie jestem prawie pewien, albo Write(string)czy WriteLine(string)będzie dwucyfrowy numer indeksu na każdym systemie, więc liczba znaków powinny być generalnie zachowują ważność.

Demo: http://ideone.com/5npky ( Writemetoda najwyraźniej tutaj znajduje się indeks 23)


To rozwiązanie jest genialne. +1
primo

Pomyślałem też, że to ironiczne, że po złożeniu wyszło dokładnie 1 postać krótsza niż twoja :)
mellamokb

7
Można zapisać trzy znaki, zmieniając nullna 0. Zdobądź niezłą liczbę znaków 111 :)
Timwi

8

115 bajtów

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

Prawdopodobnie możliwe jest wyprodukowanie czegoś nieco krótszego, ale jestem prawie pewien, że będziesz potrzebować wykonać jakieś asynchroniczne połączenie.


4

C # 96 95 94 znaki

Trochę oszukiwać, ale działa, jeśli masz zainstalowany IronRuby:

class P{static void Main(){if(IronRuby.Ruby.CreateEngine().Execute("puts'Hello World'")>1){}}}

2
Możesz zapisać 1 znak, zastępując ==jednoznakowym operatorem porównania.
Peter Taylor

@PeterTaylor Zaktualizowałem kod. Dzięki za tę wspaniałą sugestię!
Cristian Lupascu,

Usunąłem również spację między putsciągiem a łańcuchem. puts'Hello World'jest poprawnym kodem ruby
Cristian Lupascu,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.