परिचय
आप एक जीवविज्ञानी हैं जो जीवाणुओं के आंदोलन के पैटर्न का अध्ययन कर रहे हैं। आपकी शोध टीम ने उन्हें पेट्री डिश में एक गुच्छा दिया है, और आप उनकी गतिविधि रिकॉर्ड कर रहे हैं। दुर्भाग्य से, आप गंभीरता से कम कर रहे हैं, और एक वीडियो कैमरा बर्दाश्त नहीं कर सकता, इसलिए आप नियमित अंतराल पर पकवान की एक तस्वीर लेते हैं। आपका कार्य एक ऐसा कार्यक्रम बनाना है जो इन चित्रों से कीटाणुओं की चाल का पता लगाता है।
इनपुट
आपके इनपुट किसी भी उचित प्रारूप में वर्णों के दो 2 डी सरणियों हैं, पेट्री डिश के लगातार चित्रों का प्रतिनिधित्व करते हैं। दोनों सरणियों में, चरित्र .
खाली स्थान का प्रतिनिधित्व करता है, और O
एक रोगाणु का प्रतिनिधित्व करता है (यदि आप चाहें तो किसी भी दो अलग-अलग वर्ण चुन सकते हैं)। इसके अलावा, "के बाद" सरणी चार कार्डिनल दिशाओं में से एक में कुछ कीटाणुओं को एक कदम बढ़ाकर "पहले" सरणी से प्राप्त की जाती है; विशेष रूप से, सरणियों का आकार समान होता है। रोगाणु एक साथ चलते हैं, इसलिए उनमें से एक ऐसे स्थान पर जा सकता है जिसमें पहले से ही एक और कीटाणु मौजूद हो, अगर वह रास्ते से हट जाए। यह गारंटी है कि "पहले" सरणी की सीमाओं में केवल खाली स्थान होते हैं, और कम से कम एक रोगाणु होता है। इस प्रकार, निम्नलिखित इनपुट की एक वैध जोड़ी है:
Before After
...... ......
.O..O. ....O.
.OO.O. .OO.O.
...... ..O...
उत्पादन
आपका आउटपुट इनपुट के समान प्रारूप में वर्णों का एकल 2D सरणी है। यह >^<v
आंदोलन की दिशा के आधार पर उन कीटाणुओं को प्रतिस्थापित करने से पहले "से" सरणी से प्राप्त होता है, जो एक के साथ चले गए हैं (आप यहां किसी भी 4 अलग-अलग वर्णों का उपयोग भी कर सकते हैं)। कई संभावित आउटपुट हो सकते हैं, लेकिन आप उनमें से केवल एक ही देंगे। उपरोक्त उदाहरण में, एक संभव सही आउटपुट है
......
.v..O.
.>v.O.
......
आउटपुट में अनावश्यक आंदोलन की अनुमति है और रोगाणु स्थानों को स्वैप कर सकते हैं, इसलिए निम्नलिखित भी मान्य हैं:
......
.v..v.
.>v.^.
......
नियम और स्कोरिंग
आप एक पूर्ण कार्यक्रम या एक फ़ंक्शन लिख सकते हैं। सबसे कम बाइट गिनती जीतता है, और मानक खामियों को रोक दिया जाता है।
मैं अपेक्षाकृत कुशल एल्गोरिदम में दिलचस्पी रखता हूं, लेकिन मैं पूरी तरह से मजबूर करने पर प्रतिबंध नहीं लगाना चाहता। इस कारण से, एक आधुनिक सीपीयू पर 10 मिनट के भीतर अंतिम परीक्षण मामले को हल करने के लिए -75% का बोनस है (मैं अधिकांश समाधानों का परीक्षण करने में असमर्थ हूं, इसलिए मैं सिर्फ यहां आप पर भरोसा करूंगा)। डिस्क्लेमर: मुझे पता है कि एक तेज़ एल्गोरिथ्म मौजूद है ("असंतुष्ट पथ समस्या के लिए खोज"), लेकिन मैंने इसे स्वयं लागू नहीं किया है।
अतिरिक्त परीक्षण के मामले
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
संबंधित दिशा में ठीक एक कदम के आंदोलन से मेल खाती है।