เป้าหมาย
ในการแข่งขันนี้คุณจะได้ห้องสุ่มที่มีเทียนหนึ่งอัน เป้าหมายคือการเขียนโปรแกรมที่สั้นที่สุด (นี่คือกอล์ฟ) ที่กำหนดว่าส่วนใดของห้องที่ส่องสว่างด้วยเทียนโดยแทนที่จุดด่างดำด้วย@
's โปรแกรมควรใช้ห้องจาก STDIN โดยมีเอาต์พุตที่พิมพ์ไปยัง STDOUT
ตัวอย่างอินพุต / ห้อง
+------+
| C |
| +--+
| \ |
+---------+
เทียนเป็นตัวแทนที่มีC
และผนัง / กระจกจะแสดงด้วย|
, -
, หรือ/
\
ผนังตัวเองเป็นกระจก +
มุมของห้องพักที่จะแสดงด้วย
ห้องจะไม่มีผนังแนวทแยงและแสงจะไม่สามารถหลบหนีออกจากห้องได้
นอกจากนี้ตัวละครตัวแรกในบรรทัดจะเป็นส่วนหนึ่งของกำแพงนอกห้องเสมอ ตัวอักษรสุดท้ายแน่นอนในแต่ละบรรทัดจะเป็นผนังฝั่งตรงข้ามของห้อง ไม่มีตัวละครระหว่างสองตัวนี้ที่จะอยู่นอกห้อง
แสงและการสะท้อน
เทียนเปล่งแสงลำแสงแปดทิศทางในทิศทางพื้นฐานแปด: N, S, E, W, NE, SE, SW และ NW รังสีของแสงเหล่านี้กระเด็นออกมาจากกระจกตามที่อธิบายไว้ด้านล่าง:
Old Direction of Travel | Mirror | New Direction
N S E W NE SE SW NW / E W N S -- -- -- --
N S E W NE SE SW NW \ W E S N -- -- -- --
N S E W NE SE SW NW | - - - - NW SW NE SW
N S E W NE SE SW NW - - - - - SE NE SW NE
A -
หมายถึงแสงที่ถูกดูดกลืน แสงถูกดูดซับโดย C's หรือ + เสมอ เป็นสิ่งสำคัญที่จะต้องทราบว่าแสงสะท้อนออกจากกระจกเฉพาะเมื่อมันครอบครองพื้นที่เดียวกับกระจก กฎเหล่านี้ง่ายต่อการเข้าใจเมื่อคุณวาดภาพสะท้อนออกมาบนกระดาษ
ตัวอย่างผลลัพธ์
โปรแกรมควรพิมพ์ภาพของห้องที่มีแสงสว่างโดยมีจุดสีดำเขียนเป็น@
จุดไฟว่างเปล่าและไม่ได้รับผลกระทบใด ๆ สำหรับตัวอย่างข้างต้นผลลัพธ์จะเป็น:
+------+
| C |
|@ @ +--+
| @\ |
+---------+
@
ซึ่งหมายความว่าถ้าคุณดึงออกคานของแสงที่พวกเขาจะไม่เคยไปถึงช่องว่างที่มีเครื่องหมาย
ตัวอย่างเพิ่มเติม
Input:
+-----+
| |
| |
| C |
| |
| |
+-----+
Output:
+-----+
| @ @ |
|@ @|
| C |
|@ @|
| @ @ |
+-----+
Input:
+-----+
| \ |
|/ C \+-+
| |
| \ - ++
+------+
Output:
+-----+
| \ @|
|/ C \+-+
| @|
| @\ -@++
+------+
@
ใช่หรือไม่