Amacınız : "Merhaba dünya!" Klasik sonucuyla sonuçlanacak bir kod parçası yazmak STDOUT veya eşdeğerine yazdırılıyor.
Kurallar : Kod tamamen ASCII yazdırılırken olmalıdır. Tüm kodlar işlevsel olmalıdır - herhangi bir sayma karakterinin kaldırılması sonucu değiştirmeli veya kodun çalışmamasına neden olmalıdır. Tüm değişkenler atamadan sonra kullanılmalıdır. Çıktı için karakter ve Dize değişmezleri gerekli olmalıdır - yani, bir dize değişmezinin veya dize değişmezindeki herhangi bir karakterin başka bir karakterle değiştirilmesi sonucu değiştirebilmelidir (kaçış dizisinin etkisi ile değil - karakteri ters eğik çizgi ile değiştirmek) veya eşdeğer)
(NOT: Nihai kural düzenlendi)
Puanlama : Burası ilginç hale geliyor. En yüksek puan, tipik kod bowling kurallarına göre karakter sayısına göre belirlenir. Ancak karakterlerin tekrar tekrar kullanılması nokta kesintilerine yol açacaktır. Özellikle ...
- Herhangi bir alfasayısal karakterin (az, AZ, 0-9) tekrar tekrar kullanılması, tekrar başına 3 puan düşülmesine neden olur (ilk kullanım bir kesinti ile sonuçlanmaz).
- Köşeli parantezler dahil olmak üzere temel noktalama işaretlerinin ([!? .-, ": ';]) tekrar tekrar kullanılması, tekrar başına 2 puan düşülmesine neden olacaktır.
- Kıvırcık parantezler de dahil olmak üzere diğer ASCII karakterlerinin {`~ @ # $% ^ & * _ + = | \ /> <} sürekli kullanımı - tekrar başına 4 puan düşülmesine neden olacaktır.
- Boşlukların, sekmelerin ve yeni satırların tekrar tekrar kullanılması, tekrar başına 1 puan düşülmesine neden olur. Yani, bir alanın, sekmenin veya yeni satırın yalnızca ilk kullanımı toplamınıza dahil edilir.
Not: Bir yorumun başlangıcını / sonunu işaretleyen karakterler de olsa, yorumlar toplamda sayılmaz. Örneğin, C / C ++ 'da, varsa /* This is a comment */
, iki eğik çizgi ve iki yıldız sayar, ancak aralarında hiçbir şey yoktur.
Bazı örnekler (not: Julia'yı örnek dil olarak kullanma) ...
print("Hello, world!");
Toplam görünür karakter: 22
İçerir Alan: +1
Tekrarlanan alfanümerik: llor için -12
Tekrarlanan noktalama işareti: -2 için "
Nihai puan: 22 + 1-12-2 = 9
print("Hel",char(108),"o, wor",0x108,"d!"); # 0x108 makes a Uint8 that prints as ASCII
Toplam karakter: 43 (# karakterinden sonra herhangi bir karakter sayılmaz, bu yorum karakteridir) Boş
Alan içerir: +1
Tekrarlanan alfasayısallar: rr1008 için -18
Tekrarlanan noktalama işaretleri: -24 için () "" "" ",,,,,
Final puan: 43 + 1-24-18 = 2
xy=STDOUT
m="Hello, world!"
print(xy,m);
Toplam Görünür karakterler: 37
Newline İçeren: 1
Uzay İçeren: 1
Tekrarlanan alphanumerics: xyllor için -18
Tekrarlanan noktalama: -4, "için
diğer ASCII Tekrarlanan: = -4
Son skor: 37 + 1 + 1-18-4 -4 = 13
Birkaç geçersiz kod parçası ...
x=2;print("Hello,world!")
Sorun: x
atandı, ancak kullanılmadı.
print("Hello,"*" world!")
Sorun: *
gereksiz, sonuç onsuz aynı olacak.
k=1
if k>0
print("Hello, world!")
else
print("abcghjmquvxyzABCDEFGIJKLMNOPQRSTUVWXYZ_+*-&|")
end
Sorun: İkinci print
komut çalışmaz. Ayrıca, ikinci print
komutta tırnak işaretli karakterleri kaldırmak çıktı değişmez.
x="Hello, world!";
print(x)
Sorun: Yeni satırın kaldırılması sonucu değiştirmez veya hataya neden olmaz (Julia'da noktalı virgül yalnızca aynı satırda birden fazla komut varsa gereklidir, aksi takdirde yalnızca dönüş değerini bastırır).
print("Hellos\b, world!")
Sorun: s
Karakter, silindiği için sonucu etkilemez \b
. Bu, code ( "Hello",char(100),"\b, world!"
) yoluyla yapıldığında kabul edilebilir , ancak dize hazır değerleri veya karakter hazır değerleri aracılığıyla yapılamaz.
Uygun puan hesaplayıcı - http://jsfiddle.net/4t7qG/2/ - Doorknob sayesinde