지뢰 찾기 는 인기있는 컴퓨터 게임으로, 각각의 비광 셀이 몇 개의 주변 광산을 가지고 있는지에 대한 힌트를 바탕으로 직사각형 그리드에서 광산 인 셀을 표시하려고 할 때 시간을 낭비했을 것입니다. 그리고 당신이 그것을 연주하지 않은 경우, 여기 에서 연주 하십시오 .
지뢰 찾기 그리드 (일명 보드)에 대한 멋진 수학적 사실은 다음과 같습니다.
보드와 그 보완 물은 동일한 총 광산 수를 갖습니다 . ( 증거 )
즉,이 경우 완전히 지뢰 찾기 그리드를 공개한다는 말을하는 것입니다, 합이 그리드에 모든 숫자, 즉 광산 전체 의 모든 광산을 교체 그리드는 그리드의 보수의 광산 전체를 동일합니다, 비 광산으로, 모든 비 광산은 광산으로 대체되었습니다.
예를 들어 지뢰 찾기 표의 경우
**1..
34321
*2**1
광산 총계는 1 + 3 + 4 + 3 + 2 + 1 + 2 + 1 = 17입니다.
그리드의 보완은
24***
*****
3*44*
내 총계가 2 + 4 + 3 + 4 + 4 = 17입니다.
지뢰를 *
나타내는 텍스트 형식으로 임의의 지뢰 찾기 그리드를 사용하는 프로그램을 작성하십시오 . 비 광산 셀에 인접한 지뢰 수 1
를 8
나타냅니다. 당신은 사용할 수 있습니다 .
또는 0
또는
(공간)없는 내 이웃, 당신의 선택에 세포를 나타냅니다. 입력 그리드가 올바르게 표시되어 있다고 가정 할 수 있습니다. 즉, 각각의 비광 셀은 직교 또는 대각선으로 바로 인접한 총 광산 수를 정확하게 나타냅니다.
프로그램이 동일한 형식으로 그리드의 보수를 인쇄 할 필요가있다 (같은를 사용하여 .
, 0
또는
당신이 입력에서 예상대로).
바이트 단위의 가장 짧은 코드가 이깁니다.
- 프로그램 대신 입력 그리드를 문자열로 가져와 보완 그리드를 인쇄하거나 반환하는 함수를 작성할 수 있습니다.
- 입력 또는 출력의 후행 줄 바꿈은 좋지만 그리드를 형성하는 문자 외에 다른 문자는 없어야합니다.
- 1 × 1 격자가 가장 작은 입력이라고 가정 할 수 있습니다.
테스트 사례
보수의 보수가 원래 그리드이므로 모든 입력 및 출력을 교환 할 수 있습니다. 추가 테스트 사례를 위해 그리드를 회전 할 수도 있습니다.
입력:
111
1*1
111
산출:
***
*8*
***
입력:
.
산출:
*
입력:
*11*1.1**1...1***1.....1*****1..........
산출:
1**2***11*****1.1*******1...1***********
입력 : ( 컷 매듭 예제 )
**212*32
333*33**
1*22*333
222222*1
*33*2232
2**22*2*
산출:
24***4**
***7**64
*8**7***
******8*
4**7****
*33**5*3
?
보드의 마지막 줄 다음에 줄에 끝 구분 기호 (예 :)를 사용할 수 있습니까?