Tujuan Anda : untuk menulis sepotong kode yang akan menghasilkan hasil klasik "Halo, dunia!" dicetak ke STDOUT atau setara.
Aturan : Kode harus sepenuhnya dalam pencetakan ASCII. Semua kode harus fungsional - penghapusan karakter penghitungan tunggal apa pun harus mengubah hasil atau menyebabkan kode tidak berfungsi. Semua variabel harus digunakan setelah penugasan. Karakter dan Liter string harus diperlukan untuk output - yaitu, penggantian karakter literal atau karakter apa pun dalam string literal dengan karakter lain harus mampu mengubah hasil (dan bukan melalui efek urutan melarikan diri - mengganti karakter dengan backslash atau setara)
(CATATAN: Aturan final diedit pada)
Penilaian : Di sinilah ia menjadi menarik. Menang skor tertinggi sebagaimana ditentukan oleh jumlah karakter, sesuai aturan bowling kode yang khas. Tetapi penggunaan berulang karakter akan menghasilkan pengurangan poin. Secara khusus...
- Penggunaan berulang karakter alfanumerik apa pun (az, AZ, 0-9) akan menghasilkan pengurangan 3 poin per pengulangan (penggunaan pertama tidak menghasilkan pengurangan).
- Penggunaan tanda baca dasar berulang-ulang ([!? .-, ": ';]) - termasuk tanda kurung - akan menghasilkan pengurangan 2 poin per pengulangan.
- Penggunaan berulang karakter ASCII lainnya {`~ @ # $% ^ & * _ + = | \ /> <} - termasuk kurung keriting - akan menghasilkan pengurangan 4 poin per pengulangan.
- Penggunaan spasi, tab, dan baris baru yang berulang akan menghasilkan pengurangan 1 poin per pengulangan. Artinya, hanya penggunaan spasi, tab, atau baris baru pertama yang akan dihitung terhadap total Anda.
Catatan: komentar tidak dihitung terhadap total, meskipun karakter yang menandai awal / akhir dari suatu komentar dilakukan. Misalnya, dalam C / C ++, Jika sudah /* This is a comment */
, maka akan dihitung dua garis miring dan dua tanda bintang, tetapi tidak ada di antara keduanya.
Beberapa contoh (catatan: menggunakan Julia sebagai bahasa sampel) ...
print("Hello, world!");
Total karakter yang terlihat: 22
Berisi Ruang: +1
Alfanumerik
berulang : -12 untuk llor Tanda baca berulang: -2 untuk "
Skor akhir: 22 + 1-12-2 = 9
print("Hel",char(108),"o, wor",0x108,"d!"); # 0x108 makes a Uint8 that prints as ASCII
Total karakter: 43 (tidak menghitung karakter setelah #, yang merupakan karakter komentar)
Berisi Ruang: +1
Alfanumerik
berulang : -18 untuk rr1008 Tanda baca berulang: -24 untuk () "" "" "" ,,,
Final skor: 43 + 1-24-18 = 2
xy=STDOUT
m="Hello, world!"
print(xy,m);
Total karakter yang terlihat: 37
Berisi Baris Baru: +1
Berisi Spasi: +1
Alfanumerik
berulang : -18 untuk xyllor Tanda baca berulang: -4 untuk ",
ASCII berulang lainnya: -4 untuk =
Skor akhir: 37 + 1 + 1-18-4 -4 = 13
Beberapa potongan kode tidak valid ...
x=2;print("Hello,world!")
Masalah: x
ditugaskan, tetapi tidak digunakan.
print("Hello,"*" world!")
Masalah: *
tidak perlu, hasilnya akan sama tanpa itu.
k=1
if k>0
print("Hello, world!")
else
print("abcghjmquvxyzABCDEFGIJKLMNOPQRSTUVWXYZ_+*-&|")
end
Masalah: print
Perintah kedua tidak akan berjalan. Juga, menghapus karakter dalam kutipan di print
perintah kedua tidak akan mengubah output.
x="Hello, world!";
print(x)
Masalah: penghapusan baris baru tidak akan mengubah hasil atau menyebabkan kesalahan (di Julia, titik koma hanya diperlukan jika beberapa perintah berada di baris yang sama, jika tidak hanya menekan nilai balik).
print("Hellos\b, world!")
Masalah: s
karakter tidak memengaruhi hasil, karena terhapus oleh \b
. Ini dapat diterima jika dilakukan melalui kode ( "Hello",char(100),"\b, world!"
), tetapi tidak dapat dilakukan melalui string literal atau karakter literal.
Kalkulator skor nyaman - http://jsfiddle.net/4t7qG/2/ - terima kasih kepada Doorknob