Tantangannya adalah untuk mengimplementasikan program penelusuran sinar 2 dimensi, berbasis teks.
Sumber cahaya putih adalah @
simbol. R
, G
dan B
merupakan filter cahaya. /
dan \
merupakan cermin dengan reflektivitas 80%. ?
adalah sensor cahaya. >
, <
, ^
Dan V
menggabungkan 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, #include
dan using
arahan (tetapi tidak #define
) dapat dihapus dalam bahasa gaya-C, #/usr/bin/perl -options
di 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 jikaw
dari atas melewati ituR
, maka harusb
dari 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 memancarkannyaw
. Dan saya belum memutuskan spasi apa pun, setidaknya seperti yang diberikan dalam Chromium. Untuk melewatinya, hasil edit saya dapat menghapusnya.Jawaban:
Python,
602559614 karakterSunting: diperbaiki sehingga tidak perlu spasi tambahan.
sumber
F #
sumber