Noktalı virgül kullanmadan en kısa Merhaba Dünya programı


14

Kısa bir süre önce SO hakkında C # kullanarak herhangi bir noktalı virgül kullanmadan bir Hello World programı yapıp yapamayacağınızı soran bazı sorular gördüm. Zorluk, bunu tekrar yapmaktır, ancak mümkün olan en kısa miktarda kodda!


3
Bunun dile özgü bir meydan okuma olduğunu varsayıyorum? Aksi takdirde bu görevin önemsiz olacağı birçok dil vardır. (Örneğin, 'Hello World'yazdırılan geçerli bir GolfScript programıdır Hello World. Her ne kadar HQ9 + kolayca dövecektir .)
Ilmari Karonen

@llmari Üzgünüm, evet, soruyu güncelledim. Ben C # etiketlenmiş olurdu ama mevcut değil ve ben oluşturmak için temsilcisi yok, teşekkürler.
Bali C

Yanıtlar:


12

C #, 76

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

Bunu VS2012'de denedim ve isoperatörü uygulayabileceğiniz oldukça sürpriz olsa da, gayet iyi çalışıyor void...


15

C # 85 karakter

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

Bu hangi .NET sürümü? .NET 4 , TextWriter.WriteAsync () için bir tanım içermiyor gibi görünüyor.
primo

3
@primo .NET 4.5 yapar.
Bob

12

C # (114)

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

Write(string)/ İçin doğru dizinin WriteLine(string)sisteminizde farklı olabileceğini unutmayın. Bununla birlikte, toplamda yalnızca 106 yöntem olduğundan, her sistemde neredeyse eminim Write(string)veya WriteLine(string)iki basamaklı bir dizin numarası olacağından, karakter sayısı genellikle geçerli olmalıdır.

Demo: http://ideone.com/5npky ( Writeyöntem görünüşte burada dizin 23'tür)


Bu çözüm mükemmel. +1
primo

Ben de bir araya getirdikten sonra, sizinkinden tam olarak 1 karakter daha kısa ortaya çıktı ironik olduğunu düşündüm :)
mellamokb

7
Değiştirerek üç karakter kaydedebilir miyim nulliçin 0. 111 güzel bir karakter sayısı alın :)
Timwi

8

115 Bayt

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

Biraz daha kısa bir şey üretmek olasıdır, ancak bir tür asenkron çağrı yapmanız gerekeceğinden eminim.


4

C # 96 95 94 karakter

Biraz hile, ancak IronRuby yüklüyse çalışır:

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

2
Tek ==karakterli bir karşılaştırma işleci ile değiştirerek 1 karakter kaydedebilirsiniz .
Peter Taylor

@PeterTaylor Kodu güncelledim. Bu harika öneri için teşekkürler!
Cristian Lupascu

Ayrıca putsdize ile arasındaki boşluğu da kaldırdım . puts'Hello World'geçerli yakut kodu
Cristian Lupascu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.