소개
당신은 박테리아의 움직임 패턴을 연구하는 생물 학자입니다. 연구팀은 페트리 접시에 많은 것을 가지고 있으며, 당신은 그들의 활동을 기록하고 있습니다. 불행히도, 당신은 심각하게 자금이 부족하여 비디오 카메라를 구입할 수 없으므로 정기적으로 요리 사진을 찍습니다. 당신의 임무는이 사진에서 세균의 움직임을 추적하는 프로그램을 만드는 것입니다.
입력
입력 내용은 페트리 접시의 연속적인 그림을 나타내는 합리적인 형식의 2D 문자 배열입니다. 두 배열 모두에서 문자 .
는 빈 공간을 O
나타내며 세균을 나타냅니다 (원하는 경우 두 개의 다른 문자를 선택할 수 있음). 또한, "후"어레이는 일부 세균을 4 개의 기본 방향 중 하나에서 한 단계 씩 이동시킴으로써 "전"어레이로부터 획득되며; 특히, 어레이는 동일한 형상을 갖는다. 세균은 동시에 움직이므로 그 중 하나가 다른 세균이 들어있는 공간으로 이동할 수 있습니다. "이전"배열의 경계에는 빈 공간 만 포함되며 세균이 하나 이상 있어야합니다. 따라서 다음은 유효한 입력 쌍입니다.
Before After
...... ......
.O..O. ....O.
.OO.O. .OO.O.
...... ..O...
산출
출력은 입력과 동일한 형식의 단일 2D 문자 배열입니다. 이동 >^<v
방향에 따라 이동 한 세균을 대체하여 "이전"배열에서 얻습니다 (여기서는 4 개의 다른 문자를 사용할 수도 있습니다). 몇 가지 가능한 결과가있을 수 있지만 그 중 하나만 제공해야합니다. 위의 예에서 가능한 올바른 출력 중 하나는
......
.v..O.
.>v.O.
......
출력에서 불필요한 이동이 허용되고 세균이 장소를 교환 할 수 있으므로 다음 사항도 유효합니다.
......
.v..v.
.>v.^.
......
규칙과 득점
전체 프로그램이나 함수를 작성할 수 있습니다. 가장 낮은 바이트 수가 이기고 표준 허점은 허용되지 않습니다.
상대적으로 효율적인 알고리즘에 관심이 있지만 무차별 강제 실행을 금지하고 싶지 않습니다. 이러한 이유로 최신 CPU에서 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
각각의 방향으로 정확히 한 단계의 움직임 에 해당합니다.