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]
[0,0,0,1]
[0,1,0,0]
[0,0,0,0]
Output
[0,2,1,3]
[ '1011', '0000', '1000', '1111' ]
?
i
มีศูนย์ทั้งหมดยกเว้นที่คอลัมน์i
หรือไม่
0
เชื่อมโยงไปยัง1,2,3,5
แต่ผลลัพธ์สุดท้ายได้จาก0
ไป4