คุณมีหุ่นยนต์ตัวน้อยที่มีเซ็นเซอร์วัดระยะทางสี่ตัว มันรู้เลย์เอาต์ของห้อง แต่มันไม่มีความรู้สึกในการวางแนวอื่นนอกจากจะสามารถล็อคการวางแนวของกริด คุณต้องการที่จะหาว่าหุ่นยนต์อยู่บนพื้นฐานของการอ่าน แต่มันอาจจะคลุมเครือเพราะเซ็นเซอร์ จำกัด
คำอธิบายการท้าทาย
คุณจะได้รับเลย์เอาต์ของห้องและการอ่านระยะทางตามเข็มนาฬิกาสี่อันเพื่อบอกจำนวนเซลล์ระหว่างคุณกับกำแพง อาจมีกำแพงอยู่กลางห้องและขอบของตารางก็เป็นผนังเช่นกัน หุ่นยนต์ไม่สามารถวางบนผนัง
วัตถุประสงค์ของคุณคือรายการสถานที่ทั้งหมดภายในห้องที่หุ่นยนต์อาจอยู่ในที่ที่จะให้การอ่านที่กำหนด โปรดทราบว่าหุ่นยนต์ไม่มีความรู้สึกในการวางแนว (นอกเหนือจากการถูกล็อคไปที่มุม 90 องศาบนกริด - นั่นคือหุ่นยนต์จะไม่ถูกวางแนวทแยงมุมหรือมุมเอียงอื่น ๆ ) ดังนั้นการอ่าน [1, 2, 3, ตัวอย่างเช่น 4] เหมือนกับการอ่าน [3, 4, 1, 2]
ตัวอย่าง
สำหรับตัวอย่างเหล่านี้พิกัดของเซลล์จะได้รับเป็นคู่ 0 ดัชนี (x, y) จากเซลล์ซ้ายบน การอ่านจะได้รับตามลำดับตามเข็มนาฬิกาในรายการวงเล็บเหลี่ยม เลย์เอาต์จะใช้เครื่องหมายปอนด์สำหรับกำแพงและตัวละครอื่น ๆ (โดยทั่วไปคือจุด) เพื่อแสดงเซลล์ว่าง
กรณีที่ 1
. . . .
. . . .
. . # .
. . . .
- [1, 0, 2, 3] ==> (1, 0), (3, 1)
- [0, 0, 3, 3] ==> (0, 0), (3, 0), (0, 3), (3, 3)
- [2, 1, 1, 0] ==> (0, 2), (2, 1)
- [1, 1, 2, 2] ==> (1, 1)
กรณีที่ 2
# a . # a .
a # . . # a
. . # . . #
# . . # . .
a # . . # a
. a # . a #
- [0, 0, 1, 1] ==> ทุกตำแหน่งในกริดที่เป็นจุด
- [1, 0, 0, 0] ==> a ทั้งหมดของกริด
กรณีที่ 3
.
- [0, 0, 0, 0] ==> (0, 0)
กรณีที่ 4
. # #
. . .
- [1, 2, 0, 0] ==> (0, 1)
- [0, 1, 2, 0] ==> (0, 1)
- [0, 0, 1, 0] ==> (0, 0)
- [1, 0, 1, 0] ==> (1, 1)
- [0, 1, 0, 1] ==> (1, 1)
กรณีที่ 5
. # . .
. . . .
. . # .
. . . .
- [2, 1, 1, 0] ==> (0, 2), (2, 1)
- [0, 2, 2, 1] ==> (1, 1)
- [1, 0, 2, 2] ==> (1, 1)
- [0, 3, 0, 0] ==> (0, 0)
- [1, 0, 1, 1] ==> (1, 2)
กฎอื่น ๆ
- อินพุตอาจอยู่ในรูปแบบที่สะดวก อินพุตเป็นตารางของกำแพงและช่องว่างและรายการของสี่ระยะทางตามลำดับตามเข็มนาฬิกา
- ผลลัพธ์อาจเป็นรายการของเซลล์ทั้งหมดที่ตอบสนองการอ่านหรือรุ่นที่แก้ไขของตารางแสดงเซลล์ที่ตอบสนองการอ่าน รูปแบบที่แน่นอนของผลลัพธ์ไม่สำคัญตราบใดที่มันสมเหตุสมผลและสอดคล้องกัน รูปแบบเอาต์พุตที่ถูกต้องรวมถึง แต่ไม่ จำกัด เฉพาะ :
- การพิมพ์บรรทัดสำหรับแต่ละเซลล์พิกัดเป็นคู่สั่ง
- การพิมพ์กริดด้วย
.
,#
และ,!
สำหรับพื้นที่, กำแพง, และตำแหน่งที่เป็นไปได้ตามลำดับ - ส่งคืนรายการคู่ที่สั่งซื้อ
- ส่งคืนรายการดัชนี
- ส่งคืนรายการที่ใช้ค่าต่างกันสำหรับช่องว่างกำแพงและตำแหน่งที่เป็นไปได้
- ส่งคืน / พิมพ์เมทริกซ์ที่ 0 และ 1 โดยใช้ 1s เพื่อแทนเซลล์ที่การอ่านจะเกิดขึ้น (ไม่จำเป็นต้องรวมผนัง)
- อีกครั้งรายการนี้ไม่ละเอียดดังนั้นการแสดงอื่น ๆ ที่ถูกต้องตราบเท่าที่พวกเขามีความสอดคล้องและแสดงตำแหน่งที่ถูกต้องทุกที่เป็นไปได้ในตารางหรือรายการ หากคุณไม่แน่ใจออกความคิดเห็นและฉันยินดีที่จะชี้แจง
- คุณอาจสมมติว่าการอ่านสอดคล้องกับตำแหน่งอย่างน้อยหนึ่งตำแหน่งบนกริด
- คุณอาจสมมติว่ากริดอินพุตมีขนาดอย่างน้อย 1x1 และมีพื้นที่ว่างอย่างน้อยหนึ่งแห่ง
- คุณอาจสมมติว่ากริดอินพุตไม่ใหญ่กว่า 256 เซลล์ในแต่ละมิติ
- คุณอาจจะสมมติว่ากริดอินพุตนั้นเป็นรูปสี่เหลี่ยมผืนผ้าที่สมบูรณ์แบบเสมอและไม่ขรุขระ
- ไม่มีการลงโทษหรือโบนัสหากโปรแกรมของคุณให้สัญญาณที่มีสติสำหรับอินพุตที่ไม่ถูกต้อง
- นี่คือรหัสกอล์ฟดังนั้นรหัสที่สั้นที่สุดจึงชนะ
Case 5
ดูเหมือนจะไม่ถูกต้องนัก ฉันได้รับ(0,2),(2,1)
,(1,3)
, และ(1,3)
nothing