(Thử thách này rất giống nhau, nhưng thử thách hiện tại này có thêm các biến chứng.)
Hãy tưởng tượng một căn phòng 2 chiều, nơi các bức tường được mạ bằng gương phẳng.
Đột nhiên, một chùm ánh sáng chiếu vào phòng, nơi thiếu một mảnh tường! Ánh sáng nhảy múa quanh phòng, bị phản chiếu bởi những tấm gương treo tường, và cuối cùng lại rời khỏi phòng.
Hợp lý
Bạn đang đưa ra 5 biến: W, H, X, Y và Z .
Bây giờ, họ có ý nghĩa gì?
W, H là kích thước của căn phòng (bao gồm các bức tường), với W là chiều rộng và H là chiều cao.
X, Y là tọa độ mà tường có lỗ tại. Bạn có thể cho rằng điều này luôn nằm trên một bức tường gạch. Các tọa độ dựa trên 0, với trục X hướng phải và trục Y chỉ xuống.
Z là một nhân vật duy nhất, đại diện cho hướng đó ánh sáng rơi vào phòng, một trong hai \
hoặc /
.
Phòng phải được xây dựng với các nhân vật sau:
|
cho các bức tường ngang-
cho các bức tường thẳng đứng+
cho các góc
Ví dụ: (W = 7, H = 4)
+-----+
| |
| |
+-----+
Bây giờ chúng ta có một căn phòng, hãy phá hủy một trong những viên gạch ốp tường, vì vậy một chùm ánh sáng rơi vào phòng. Chùm ánh sáng là các đường chéo, đại diện \
và /
ký tự.
Hãy thay thế gạch ốp tường ở X = 2, Y = 0 bằng một \
chùm ánh sáng.
+-\---+
| |
| |
+-----+
Ánh sáng đi qua theo đường chéo trong phòng cho đến khi nó chiếu vào tường gương. Nếu một bức tường bị bắn trúng, hướng sẽ đảo dọc theo trục của bức tường và chùm tia truyền đi.
+-\---+
|\ \/\|
| \/\/|
+-----+
Trong ví dụ này, chùm sáng chiếu tới một điểm mà một góc của bức tường bị chiếu vào, điều này gây ra rằng chùm tia bị đảo ngược hoàn toàn và đi hết đường về, cuối cùng rời khỏi phòng.
Nhiệm vụ của bạn
Viết chương trình in căn phòng và toàn bộ đường đi của chùm sáng, cho đến khi nó rời khỏi phòng một lần nữa hoặc lặp lại thành một vòng lặp vô hạn.
Đầu vào
Đầu vào có thể được nhận ở bất kỳ định dạng hợp lý nào, nhưng nó phải bao gồm 4 số nguyên W, H, X, Y và ký tự Z chẳng hạn [10, 8, 0, 3, \]
.
Bạn có thể cho rằng:
- W, H> = 3
- X, Y luôn được đặt tại một bức tường
- Z sẽ chỉ có thể chứa các giá trị
\
và/
.
Đầu ra
Bạn có thể quyết định nếu bạn trả về một chuỗi hoặc trực tiếp xuất ra stdout
.
Nó phải bao gồm tường của căn phòng và chùm sáng (được xác định bởi các ký tự ASCII ở trên).
Quy tắc
- Sơ hở tiêu chuẩn bị cấm.
- Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte, trong bất kỳ ngôn ngữ nào, sẽ thắng.
- Tất cả các ngôn ngữ mã hóa được tạo ra trước khi xuất bản thử thách này đều được cho phép.
Ví dụ
Đầu vào: [5, 4, 2, 0, /]
+-/-+
|/ /|
|\/ |
+---+
Đầu vào: [20, 3, 0, 1, \]
+------------------+
\/\/\/\/\/\/\/\/\/\|
+------------------+
Đầu vào: [10, 8, 0, 3, \]
(Ví dụ về một vòng lặp vô hạn sẽ không rời khỏi phòng một lần nữa.)
+--------+
|/\/\/\/\|
|\/\/\/\/|
\/\/\/\/\|
|\/\/\/\/|
|/\/\/\/\|
|\/\/\/\/|
+--------+
Chúc may mắn!