Saya mengunduh POV-ray dan menampilkan gaya 90s metal shiny ini:
Tugas Anda adalah melakukan hal yang sama, tetapi melakukannya dengan menerapkan mesin rendering sendiri dalam beberapa byte mungkin. Anda tidak harus mereplikasi gambar yang tepat ini - gambar apa pun dari bola reflektif di atas kotak-kotak yang tak terbatas akan dilakukan, asalkan memenuhi kriteria di bawah ini.
Aturan:
Gambar harus menggambarkan bola reflektif yang melayang di atas kotak-kotak tak terbatas. Baik kotak-kotak itu sendiri dan pantulannya di bola harus ditunjukkan pada gambar. Harus jelas secara visual bahwa inilah yang kami lihat. Di luar ini, detail geometri, warna, sifat material dll. Terserah Anda.
Harus ada beberapa pencahayaan dalam adegan: bagian-bagian dari bola harus lebih gelap daripada bagian-bagian lain, dan secara visual itu mungkin untuk mengetahui secara kasar dari mana cahaya itu berasal. Selain itu, detail model pencahayaan terserah Anda. (Anda dapat menemukan model pencahayaan Anda sendiri yang disederhanakan jika Anda mau.) Bola tidak harus membuat bayangan.
Dua kriteria di atas - apakah itu benar-benar terlihat seperti bola mengkilap di atas kotak-kotak yang diterangi oleh sumber cahaya - akan dinilai oleh masyarakat menggunakan voting. Karena itu, jawaban harus memiliki skor positif agar memenuhi syarat untuk menang.
Output harus minimal 300x300 piksel. Itu dapat ditampilkan di layar atau ditulis ke file, baik-baik saja.
Kode Anda harus berjalan dalam waktu kurang dari satu jam di komputer modern yang masuk akal. (Ini murah hati - POV-ray membuat adegan di atas praktis instan.)
Tidak ada fungsi penelusuran sinar bawaan yang dapat digunakan - Anda harus mengimplementasikan renderer sendiri.
Ini adalah kode-golf , sehingga entri penilaian positif dengan kode terpendek (dalam byte) menang. Namun, Anda juga dipersilakan untuk memainkan meta-game untuk mendapatkan suara terbanyak dengan menggambar gambar yang cantik (sambil tetap menjaga kode singkat).
Tantangan ini mungkin tampak sangat sulit, tetapi karena geometri sudah diperbaiki, algoritma untuk rendering adegan seperti itu dengan ray tracing cukup mudah. Ini benar-benar hanya kasus iterasi setiap piksel dalam gambar output dan mengevaluasi ekspresi matematika untuk melihat warna apa yang seharusnya, jadi saya optimis bahwa kita akan melihat beberapa jawaban yang baik.
sumber
Jawaban:
Python 2,
484468467 byteCatatan: setelah
if I>0:
ada baris baru diikuti oleh satu tab char sebelumt=
...Menjalankan program akan membuat gambar 800x600 bernama s.pgm
Dimulai dari formula pelacak sinar "nyata" (sedikit dimodifikasi untuk bermain golf).
Rendering membutuhkan sekitar 3 detik pada PC lama saya yang sudah mati (0,7 detik dengan pypy).
sumber
0000
dengane4
seluruh.a if b else c
dengan(c,a)[b]
selama Anda tidak mengandalkan korsleting untuk menghindari mis pembagian dengan nol kesalahan.if A:code;return B\nelse:return C
Anda juga dapat menggantinya dengancode;return(C,B)[A]
.