12
Drunkard's Journey Home
Drunkard's Journey Home ในการท้าทายนี้คุณต้องเขียนโปรแกรมที่เลียนแบบคนเมาที่เดินโซเซกลับบ้านจากบาร์ การป้อนข้อมูล: อินพุตจะเป็นเมทริกซ์คำแทน (แสดงกราฟกำกับ) ซึ่งแสดงเส้นทางที่คนเมาสามารถรับได้ ในแต่ละสถานที่คนขี้เมาจะเลือกเส้นทางเดียวโดยการสุ่ม (แต่ละตัวเลือกมีโอกาสเท่ากันโดยประมาณและไม่ขึ้นอยู่กับตัวเลือกก่อนหน้า) เพื่อติดตาม สมมติว่าคนเมาเหล้าเริ่มที่บาร์เสมอ (แถวแรกในเมทริกซ์ adjacency) หากคนขี้เมาเข้าสู่จุดจบสามารถสันนิษฐานได้ว่าเขาเดินทางกลับบ้านหรือถูกจับกุมเพราะความมึนเมาของสาธารณะและโปรแกรมควรกลับไปตามเส้นทางของเขา สามารถสันนิษฐานได้ว่ากราฟจะมีจุดจบอย่างน้อยหนึ่งจุดเสมอ นอกจากนี้ยังสามารถสันนิษฐานได้ว่าคนเมาเหล้าจะสามารถออกจากบาร์ได้เสมอ (แถวแรกจะไม่ใช่ศูนย์ทั้งหมด) และถ้าคนขี้เมาติดอยู่ในสถานที่ตั้งแถวนั้นจะเป็นศูนย์โดยศูนย์ทั้งหมด เอาท์พุท: ผลลัพธ์จะเป็นเส้นทางที่คนขี้เมาใช้ในความพยายามที่จะทำให้เขากลับบ้าน ค่าสำหรับตำแหน่งที่ตั้งสามารถเป็นศูนย์หรือดัชนีหนึ่งรายการก็ได้ ตัวอย่าง: Input [1,0,1,1] [0,0,0,0] [1,0,0,0] [1,1,1,1] Possible Outputs [0,2,0,3,2,0,0,3,1] [0,3,0,3,1] Input [0,1,1,1,0,1] [1,0,1,0,1,1] [0,0,0,0,0,0] [0,0,0,0,0,1] [1,0,0,0,0,0] [0,0,0,0,0,0] Possible outputs [0,1,5] [0,5] [0,1,4,0,2] [0,3,5] [0,3,0,1,4,0,5] Deterministic path: Input [0,0,1,0] …