บทนำ
คุณเป็นนักชีววิทยาศึกษารูปแบบการเคลื่อนไหวของแบคทีเรีย ทีมวิจัยของคุณมีกลุ่มของพวกเขาในจาน Petri และคุณกำลังบันทึกกิจกรรมของพวกเขา น่าเสียดายที่คุณมีเงินทุนไม่เพียงพอและไม่สามารถซื้อกล้องวิดีโอได้ดังนั้นคุณเพียงแค่ถ่ายภาพอาหารเป็นระยะ ๆ งานของคุณคือสร้างโปรแกรมที่ติดตามการเคลื่อนไหวของเชื้อโรคจากภาพเหล่านี้
อินพุต
อินพุตของคุณเป็นสองมิติสองแถวของตัวละครในรูปแบบที่เหมาะสมแสดงรูปภาพต่อเนื่องของจานเลี้ยงเชื้อ ในทั้งสองอาร์เรย์ตัวละครจะ.
แทนพื้นที่ว่างและO
แสดงถึงเชื้อโรค (คุณสามารถเลือกอักขระสองตัวที่แตกต่างกันได้หากคุณต้องการ) ยิ่งไปกว่านั้นอาร์เรย์ "after" ได้มาจากอาร์เรย์ "before" โดยการย้ายเชื้อโรคไปหนึ่งก้าวในหนึ่งในสี่ทิศทางที่สำคัญ โดยเฉพาะอย่างยิ่งอาร์เรย์มีรูปร่างเหมือนกัน เชื้อโรคเคลื่อนที่ไปพร้อมกันดังนั้นหนึ่งในนั้นอาจย้ายไปยังพื้นที่ที่มีเชื้อโรคอื่นอยู่แล้วหากมันเคลื่อนที่ออกนอกเส้นทาง มีการรับประกันว่าขอบเขตของอาร์เรย์ "ก่อน" มีช่องว่างเท่านั้นและมีอย่างน้อยหนึ่งเชื้อโรค ดังนั้นต่อไปนี้เป็นคู่ของอินพุตที่ถูกต้อง:
Before After
...... ......
.O..O. ....O.
.OO.O. .OO.O.
...... ..O...
เอาท์พุต
เอาต์พุตของคุณเป็นอาร์เรย์ 2D เดียวของตัวละครในรูปแบบเดียวกับอินพุต มันได้มาจากอาร์เรย์ "ก่อน" โดยแทนที่เชื้อโรคเหล่านั้นที่ย้ายด้วยหนึ่งใน>^<v
ขึ้นอยู่กับทิศทางของการเคลื่อนไหว (คุณยังสามารถใช้อักขระที่แตกต่างกัน 4 ตัวที่นี่) อาจมีผลลัพธ์ที่เป็นไปได้หลายอย่าง แต่คุณจะต้องให้เพียงหนึ่งในนั้น ในตัวอย่างข้างต้นหนึ่งเอาต์พุตที่ถูกต้องที่เป็นไปได้คือ
......
.v..O.
.>v.O.
......
การเคลื่อนไหวที่ไม่จำเป็นได้รับอนุญาตในเอาต์พุตและเชื้อโรคสามารถสลับตำแหน่งได้ดังนั้นสิ่งต่อไปนี้จะถูกต้อง:
......
.v..v.
.>v.^.
......
กฎและการให้คะแนน
คุณสามารถเขียนโปรแกรมเต็มรูปแบบหรือฟังก์ชั่น จำนวนไบต์ต่ำสุดที่ชนะและช่องโหว่มาตรฐานไม่ได้รับอนุญาต
ฉันสนใจในอัลกอริธึมที่ค่อนข้างมีประสิทธิภาพ แต่ฉันไม่ต้องการห้ามการเดรัจฉานบังคับโดยสิ้นเชิง ด้วยเหตุนี้จึงมีโบนัส -75%สำหรับการแก้ไขกรณีทดสอบล่าสุดภายใน 10 นาทีบน CPU ที่ทันสมัย (ฉันไม่สามารถทดสอบวิธีแก้ปัญหาส่วนใหญ่ได้ดังนั้นฉันจะเชื่อใจคุณที่นี่) ข้อความปฏิเสธความรับผิดชอบ:ฉันรู้ว่ามีอัลกอริทึมที่รวดเร็วอยู่ (ค้นหา "ปัญหาการแยกเส้นทาง") แต่ฉันไม่ได้ดำเนินการด้วยตนเอง
กรณีทดสอบเพิ่มเติม
Before
......
.O..O.
..OO..
......
After
......
..O...
...OO.
..O...
Possible output
......
.>..v.
..vO..
......
Before
.......
.OOOOO.
.O..OO.
.OO..O.
.OOOOO.
.......
After
.......
..OOOOO
.O...O.
.O...O.
.OOOOOO
....O..
Possible output
.......
.>>>>>.
.O..>v.
.Ov..v.
.O>>v>.
.......
Before
..........
.OOO..OOO.
.OOOOOOOO.
.OOO..OOO.
..........
After
..O.......
.OOO..O.O.
..OOOOOOOO
.O.O..OOO.
.......O..
Possible output
..........
.>^O..O>v.
.^O>>>vO>.
.O>^..>vO.
..........
Before
............
.OO..OOOOOO.
.OO......OO.
...OOOOOO...
.O.OOOOOO.O.
...OOOOOO...
.OOOOOOOOOO.
............
After
..........O.
.OO..OOOOO..
.O...O...O..
.O.OOOOOOO..
.O.OOOOOO..O
...OO..OO...
....OOOOOOOO
.OOO........
Possible output
............
.OO..v<<<<^.
.v<......^<.
...OOO>>>...
.O.OOO^OO.>.
...OOv^OO...
.vvvO>>>>>>.
............
Before
................
.OOOOOO.OOOOOOO.
..OO..OOOOOOOOO.
.OOO..OOOO..OOO.
..OOOOOOOO..OOO.
.OOOOOOOOOOOOOO.
................
After
................
..OOOOO.OOOOOOOO
..OO..OOOOOOOOO.
..OO..OOOO..OOOO
..OOOOOOOO..OOO.
..OOOOOOOOOOOOOO
................
Possible output
................
.>>>>>v.>>>>>>>.
..OO..>>^>>>>>v.
.>>v..OOO^..OO>.
..O>>>>>>^..OOO.
.>>>>>>>>>>>>>>.
................
Before
..............................
.OOO.O.O.....O.....O.O.O..O...
..OOO.O...O..OO..O..O.O.......
.....O......O..O.....O....O...
.O.OOOOO......O...O..O....O...
.OO..O..OO.O..OO..O..O....O...
..O.O.O......OO.OO..O..OO.....
..O....O..O.OO...OOO.OOO...O..
.....O..OO......O..O...OO.OO..
........O..O........OO.O.O....
..O.....OO.....OO.OO.......O..
.O.....O.O..OO.OO....O......O.
..O..OOOO..O....OO..........O.
.O..O...O.O....O..O....O...OO.
....O...OO..O.......O.O..OO...
........O.O....O.O....O.......
.OO.......O.OO..O.......O..O..
....O....O.O.O...OOO..O.O.OO..
.OO..OO...O.O.O.O.O...OO...O..
..............................
After
..............................
.OOOOO.......OO.....O..O......
...OO..O...O...O....OO....O...
....O.O......O..OO...OO...O...
.OO.OOOO......OO..O..O........
O.O.OO..O..O..O..OO...O...OO..
.OO.....O....OO.O..O.OO.O.....
......O.....O.....OOO.OO...O..
....O..OOOO..O..O..O.O.O.OO...
..O......O.O........O...O.O...
.O.....OOO.....OO.OO...O...O..
.......OOO..O.O.O...........O.
.O...O.....O...OOOO..O.O....O.
.O..O.O..O.....O......O....OO.
....O..O..O.O......O.....O....
........OOO....O......O..O....
.OO......O..OO..OOO.....O..O..
..O.O....OO..O...OO...O...OO..
.O..OO....O..O...O.O.O.OO.....
..............O............O..
Possible output
..............................
.OOO.O.v.....>.....>.v.O..v...
..>>^.v...>..^>..v..O.v.......
.....<......>..>.....O....O...
.O.<O><O......O...O..O....v...
.<O..O..v<.O..O^..O..>....>...
..<.^.v......OO.O^..>..<O.....
..^....v..v.Ov...>>^.<OO...O..
.....<..OO......O..O...Ov.v<..
........>..O........O^.v.^....
..^.....Ov.....OO.OO.......O..
.^.....^.^..O>.vO....v......O.
..<..Ov^^..O....><..........O.
.O..O...>.v....O..^....^...OO.
....O...<v..O.......<.^..v<...
........O.O....O.v....O.......
.OO.......<.Ov..O.......O..O..
....O....O.<.^...O^v..O.v.OO..
.O^..<<...O.>.v.>.^...<O...v..
..............................
>^<v
สอดคล้องกับการเคลื่อนไหวของขั้นตอนเดียวในทิศทางที่เกี่ยวข้อง