Thách thức là triển khai chương trình dò tia 2 chiều, dựa trên văn bản.
Nguồn của ánh sáng trắng là @
biểu tượng. R
, G
Và B
là bộ lọc ánh sáng. /
và \
là những tấm gương có độ phản xạ 80%. ?
là một cảm biến ánh sáng. >
, <
, ^
Và V
kết hợp ánh sáng theo hướng thích hợp (ví dụ như nếu một màu đỏ và một màu xanh lá cây được đưa vào một >
ánh sáng sẽ được phát ra về phía bên phải và nó sẽ là màu vàng). Các nhân vật không phải khoảng trắng khác hấp thụ tất cả ánh sáng. Ánh sáng được phát ra từ @
các biểu tượng theo bốn hướng.
Khi chương trình được chạy, nó sẽ tạo ra đầu ra giống như đầu vào, nhưng với các tia được theo dõi. Bởi vì đây là 2 chiều và tôi đảm bảo trong đầu vào sẽ không có tia nào đi qua, nên sẽ không có vấn đề gì với điều đó. Mỗi tia nên được đại diện bởi một chữ cái; r = đỏ, g = xanh, b = xanh, c = lục lam, m = đỏ tươi, y = vàng, w = trắng. Sẽ không có bất kỳ màu sắc ternary, bao giờ. Vỏ là quan trọng để phân biệt nó với đầu vào. Sau đầu ra đó, các giá trị ánh sáng thu được bằng các dấu hỏi (theo thứ tự xuất hiện của chúng, từ trái sang phải từ trên xuống dưới) phải được xuất ra dưới dạng phần trăm và màu sắc. Ví dụ: đầu vào này:
/ @
-
\R> ?
@B/
Nên cho đầu ra:
/wwwwwwwwwwwwwwwwww@w
w -
w\R>mmmmmmmmmmmmmmmmm?
w b
@B/
#1: 72% Magenta
Một điểm quan trọng khác cần lưu ý - khi hai màu được kết hợp bằng cách sử dụng "lăng kính" (mũi tên), cường độ của ánh sáng kết hợp sẽ trở thành cường độ trung bình của hai màu. Đầu ra phải chính xác như được chỉ định (ví dụ #x: [x] [x] x% Color ).
Nếu ngôn ngữ của bạn không thể đọc từ STDIN và ghi vào STDOUT, hãy tạo một hàm (ẩn danh hoặc lambda khi khả dụng) chấp nhận đầu vào làm đối số và trả về kết quả.
Chỉ thị cho trình biên dịch, các cấu trúc cần thiết hoặc được khuyến nghị cho tất cả hoặc hầu hết các chương trình được tạo bằng ngôn ngữ, v.v. có thể được bỏ qua. Ví dụ: #include
và các using
chỉ thị (nhưng không #define
) có thể bị xóa trong các ngôn ngữ kiểu C, #/usr/bin/perl -options
trong Perl và
Module Module1
Sub Main()
End Sub
End Module
trong VB.NET chẳng hạn. Nếu bạn nhập không gian tên hoặc thêm bao gồm các chỉ thị, xin vui lòng lưu ý chúng trong câu trả lời của bạn.
Bây giờ đã đủ khó chưa? :)
>
là bắt ánh sáng đi thẳng qua nó. Và nếu w
từ trên xuống đi qua đó R
, thì b
từ dưới lên. Cuối cùng (tôi nghĩ), bạn đã sai về các tia không giao nhau. Để đưa ra một ví dụ một dòng, đầu ra chính xác sẽ là @R> B@
gì?
@
ở phía dưới bên trái phát ra ánh sáng theo cả bốn hướng, phải không? Vì vậy, đặc biệt, nó phát ra rằng w
. Và tôi đã không phá vỡ bất kỳ khoảng cách nào, ít nhất là được hiển thị trong Chromium. Khi đi thẳng qua nó, bản chỉnh sửa của tôi có thể làm rõ điều đó.