บทนำ
คุณมีความโชคร้ายที่ต้องติดอยู่ในรถที่ต้องหลบหนีจากสิ่งกีดขวาง คุณสมบัติทั้งหมดของรถไม่ตอบสนองประหยัดสำหรับระบบบังคับเลี้ยวซึ่งได้รับความเสียหาย ขับตรงหรือเลี้ยวขวาก็ได้ รถสามารถนำทางไปสู่ความปลอดภัยได้หรือไม่?
กลศาสตร์
รถของคุณเริ่มต้นที่มุมบนซ้ายของแผนที่ 8x8 และพยายามที่จะปลอดภัยที่มุมล่างขวา รถมีทิศทาง (เริ่มแรกไปทางขวา) วัดโดยเพิ่มทีละ 90 องศา รถสามารถดำเนินการอย่างใดอย่างหนึ่งจากสองการกระทำ:
- ขับไปข้างหน้าหนึ่งสี่เหลี่ยมหรือ
- หมุนตามเข็มนาฬิกา 90 องศาจากนั้นขับไปข้างหน้าหนึ่งช่อง
โปรดทราบว่ารถไม่สามารถเลี้ยวได้เร็วพอที่จะเลี้ยวได้ 180 องศาในหนึ่งตาราง
สี่เหลี่ยมบางอันเป็นอุปสรรค หากรถเข้าสู่จัตุรัสสิ่งกีดขวางก็เกิดปัญหา ทุกอย่างที่อยู่นอกสนาม 8x8 นั้นถือว่าเป็นอุปสรรคดังนั้นการขับรถนอกเส้นทางนั้นจึงเทียบเท่ากับการกระแทก
ตารางด้านล่างขวาคือจัตุรัสที่ปลอดภัยซึ่งช่วยให้รถหลบหนีจากสิ่งกีดขวางได้ สี่เหลี่ยมเริ่มต้นและสี่เหลี่ยมปลอดภัยถือว่าไม่เป็นอุปสรรค
งาน
คุณต้องเขียนโปรแกรมหรือฟังก์ชั่นที่ใช้เป็นอาเรย์ของ 8x8 (เมทริกซ์, ลิสต์ของรายการ, ฯลฯ ) ซึ่งแสดงถึงเส้นทางของสิ่งกีดขวาง โปรแกรมส่งคืนหรือพิมพ์บูลีนหรือสิ่งที่คล้ายกัน ถ้ามันเป็นไปได้สำหรับรถที่จะให้มันไปตารางปลอดภัยโดยไม่ crashing (เช่นถ้าแผนที่จะแก้ปัญหาได้) ออกเป็นมิฉะนั้นก็True
False
เกณฑ์การให้คะแนน
กฎของรหัสกอล์ฟมาตรฐาน - ผู้ชนะคือรหัสที่มีจำนวนไบต์น้อยที่สุด
โบนัส:
หากสำหรับแผนที่ที่แก้ไขได้รหัสของคุณจะแสดงชุดข้อมูลไดรเวอร์ที่ถูกต้องซึ่งนำรถไปยังจัตุรัสที่ปลอดภัยให้หักคะแนน 10 เปอร์เซ็นต์จากคะแนนของคุณ ตัวอย่างรูปแบบเอาท์พุทอาจเป็น
SRSSR
(ระบุตรง, ขวา, ตรง, ตรง, ขวา) เอาต์พุตนี้จะแทนที่True
เอาต์พุตมาตรฐานหากสำหรับแผนที่ที่ไม่สามารถแก้ไขได้ผลลัพธ์ของรหัสของคุณจะแยกแยะระหว่างสถานการณ์ที่ความผิดพลาดไม่สามารถหลีกเลี่ยงได้และสถานการณ์ที่เป็นไปได้ที่จะขับไปรอบ ๆ เส้นทางของสิ่งกีดขวางตลอดไปให้หักคะแนนร้อยละ 10 ตัวอย่างผลลัพธ์อาจเกิดขึ้นได้
Crash
หากการชนไม่สามารถหลีกเลี่ยงได้หรือStuck
หากรถติดค้างในเส้นทางของสิ่งกีดขวางตลอดไป เอาต์พุตเหล่านี้จะแทนที่False
เอาต์พุตมาตรฐานสำหรับแผนที่ที่ไม่สามารถแก้ไขได้
ตัวอย่าง
หากโปรแกรมได้รับอาร์เรย์ 8x8 เช่นนี้
[[0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[1, 1, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 1, 0, 0, 0, 0],
[0, 0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 1, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[0, 1, 1, 0, 0, 0, 1, 0]]
มันจะถูกตีความว่าเป็นแผนที่เช่นนี้โดยมีสี่เหลี่ยมสีดำแสดงถึงสิ่งกีดขวาง:
และทางออกที่เป็นไปได้คือ:
เนื่องจากมีวิธีแก้ปัญหาอยู่โปรแกรมควรส่งคืน / พิมพ์True
สำหรับแผนที่นี้ SSSSRSRRRSRSSRRRSSRSSS
ลำดับของการเคลื่อนไหวที่แสดงที่นี่เป็น
Crash
Stuck
พวกเขาอยู่ที่นี่เพราะนานแค่ไหน 2 แถวที่เต็มไปด้วยทุกสิ่งทุกอย่างที่ว่างเปล่าCrash
-> เต็มไปด้วยแถว 7 ทุกอย่างว่างเปล่า ->Stuck