Tantangannya adalah untuk mengimplementasikan program penelusuran sinar 2 dimensi, berbasis teks.
Sumber cahaya putih adalah @simbol. R, Gdan Bmerupakan filter cahaya. /dan \merupakan cermin dengan reflektivitas 80%. ?adalah sensor cahaya. >, <, ^Dan Vmenggabungkan cahaya dalam arah yang tepat (misalnya jika satu merah dan satu hijau datang ke >cahaya akan dipancarkan ke arah kanan dan itu akan menjadi kuning). Karakter non-spasi putih menyerap semua cahaya. Cahaya dipancarkan dari @simbol dalam empat arah.
Ketika program dijalankan, ia harus menghasilkan output yang sama dengan input, tetapi dengan sinar yang dilacak. Karena ini adalah 2 dimensi, dan saya jamin dalam input tidak akan ada sinar yang melintas, tidak akan ada masalah dengan itu. Setiap sinar harus diwakili oleh surat; r = merah, g = hijau, b = biru, c = cyan, m = magenta, y = kuning, w = putih. Tidak akan ada warna ternary, selamanya. Casing penting untuk membedakannya dari input. Setelah output itu, nilai-nilai cahaya yang ditangkap oleh tanda tanya (dalam urutan penampilannya, dari kiri ke kanan atas ke bawah) harus ditampilkan sebagai persentase dan warna. Misalnya, input ini:
/ @
-
\R> ?
@B/
Harus memberikan output:
/wwwwwwwwwwwwwwwwww@w
w -
w\R>mmmmmmmmmmmmmmmmm?
w b
@B/
#1: 72% Magenta
Poin penting lainnya yang perlu diperhatikan - ketika dua warna digabungkan menggunakan "prisma" (panah), kekuatan cahaya gabungan menjadi kekuatan rata-rata keduanya. Output harus persis seperti yang ditentukan (mis. #X: [x] [x] x% Warna ).
Jika bahasa Anda tidak dapat membaca dari STDIN dan menulis ke STDOUT, buat fungsi (anonim atau lambda bila tersedia) yang menerima input sebagai argumen dan mengembalikan hasilnya.
Arahan ke kompiler, struktur yang diperlukan atau direkomendasikan untuk semua atau sebagian besar program yang dibuat dalam bahasa, dll. Dapat dihilangkan. Misalnya, #includedan usingarahan (tetapi tidak #define) dapat dihapus dalam bahasa gaya-C, #/usr/bin/perl -optionsdi Perl, dan
Module Module1
Sub Main()
End Sub
End Module
di VB.NET, misalnya. Jika Anda mengimpor ruang nama atau menambahkan sertakan arahan, harap catat dalam jawaban Anda.
Apakah itu cukup sulit, sekarang? :)
>menangkap cahaya yang akan langsung melewatinya. Dan jika wdari atas melewati itu R, maka harus bdari atas. Akhirnya (saya pikir), Anda salah tentang sinar yang tidak menyeberang. Untuk memberikan contoh satu baris, untuk apa hasil yang benar @R> B@?
@di kiri bawah memancarkan cahaya ke empat arah, bukan? Jadi secara khusus, itu memancarkannya w. Dan saya belum memutuskan spasi apa pun, setidaknya seperti yang diberikan dalam Chromium. Untuk melewatinya, hasil edit saya dapat menghapusnya.