Pegolf.
Bersama-sama, kami telah bersatu untuk menghasilkan kode yang ringkas, fungsional indah dan lebih jelek daripada Phantom of the Opera dari novel asli.
Waktunya telah tiba bagi kita untuk membawa keindahan kembali ke dunia pemrograman. Dengan warna. Dengan cara yang ringkas, fungsional cantik lebih jelek daripada Phantom of the Opera dari novel aslinya.
Kita akan mengkodekan stabilo sintaks yang berwarna-warni. Dalam jumlah kode sesingkat mungkin.
Anda akan menerima melalui file input atau Stdin file C yang valid. File C akan menggunakan konvensi baris pilihan Anda, dan hanya akan berisi karakter ASCII 32-126. Anda harus mengubahnya menjadi file HTML yang menampilkan dengan benar setidaknya di Chrome, yang menunjukkan kode sumber dengan penyorotan sintaksis. Outputnya mungkin dalam file atau ke Stdout.
Anda harus menyoroti:
Semua string dan karakter (termasuk karakter kutipan) dalam warna Hijau (# 00FF00). String dapat berisi karakter yang lolos.
Semua kata C dilindungi warna Biru (# 0000FF).
Semua komentar dalam warna Kuning (# FFFF00).
Semua arahan preprosesor C dalam Pink (# FF00FF).
Output saat ditampilkan di Chrome harus:
Berada dalam font dengan lebar tetap
Tampilkan baris baru di mana pun mereka muncul di sumber asli
Secara akurat mereproduksi spasi putih. Karakter tab harus dianggap sebagai 4 spasi.
Bonus
x 0,9 jika Anda memasukkan nomor baris. Nomor baris harus dapat mencapai setidaknya 99999. Semua sumber harus tetap selaras - jadi, kode sumber dengan nomor baris yang lebih kecil masih harus dimulai pada posisi yang sama dengan kode sumber dengan nomor baris yang lebih tinggi
x 0,8 jika latar belakang setiap baris berganti-ganti antara abu-abu terang (# C0C0C0) dan putih (#FFFFFF)
x 0,9 jika kode sumber Anda ditulis dalam C, dan dapat memformat dirinya dengan benar.
Mencetak gol
Ini golf kode. Skor Anda adalah jumlah byte kode sumber Anda dikalikan dengan bonus apa pun. Pemenangnya adalah pegolf dengan skor terendah.
Jawaban:
Perl 769 karakter * 0,9 * 0,8 = 554
Mungkin masih ada beberapa perbaikan yang harus dilakukan pada beberapa regex, tetapi perlahan-lahan sampai di sana!
Versi yang sedikit kurang dikaburkan dengan komentar:
Sekarang berhasil menyoroti entri @ xfix.
Meminjam gagasan untuk
</tr>
keluar dari entri @ xfix, terima kasih!Contoh output untuk solusi @ xfix .
sumber
</tr>
dan</td>
sepenuhnya opsional, jadi saya mengabaikannya.if|int
satu karakter kurang darii(f|nt)
. Ataud(efault|o|ouble)
char lain kurang darid(efault|o(uble)?)
.<style>
blok ke ujung dan menghilangkan tag akhir. Anda kemudian dapat menghilangkan yang terakhir}
dari gaya. Tentu, ini sepenuhnya tidak valid, tetapi bekerja di Chrome!C -
16051200 karakter * 0,9 * 0,8 * 0,9 = 777 karakterPasti terlalu lama, tapi terserahlah. 264 digunakan oleh daftar kata kunci itu sendiri. Versi long one liner. Tidak menggunakan alokasi memori, sehingga penggunaan memori sangat rendah (dan semuanya bersifat global, sehingga tumpukan tidak benar-benar digunakan). Contoh HTML di JSFiddle . Menurut pendapat saya, dukungan komentar adalah hal yang paling kompleks dalam kode.
Dan versi yang lebih panjang (yang dapat dibaca sebagai program nyata, selain beberapa trik kode golf saya tidak berpikir saya bisa menerapkannya dengan mudah saat bermain golf program.
sumber
PHP 606 byte × 0,9 × 0,8 = 436
Diformat:
Membaca dari stdin dan menulis ke stdout.
Akhir baris yang diterima adalah \ n dan \ r \ n.
Apakah nomor baris dan pergantian warna garis.
Saya menggunakan warna yang sedikit berbeda sehingga saya tahan melihatnya, meskipun tidak dengan cara yang mempengaruhi jumlah byte.
Saya tidak punya Chrome untuk mengujinya meskipun tidak masalah di Firefox.
sumber
C ++ -
5067 bytes4612 * 0,9 * 0,8 = 3320 (* 0,9 = 2988 jika mampu memformat sendiri diperhitungkan - ditulis dalam C ++)Saya menyadari bahwa ini lebih besar daripada solusi yang telah disajikan di sini, tetapi saya tetap memutuskan untuk memposting ini karena saya mulai mengerjakan versi saya sebelum solusi C oleh xfix diposting.
Setengah dari ini adalah array besar kata kunci C dan C ++.
Versi yang dapat dibaca:
sumber
__
(dua garis bawah) sebagai kata kunci, seperti spesifikasi mengatakan itu dicadangkan untuk tujuan implementasi.