지뢰 찾기 는 타일을 클릭하지 않고 어떤 타일이 "광산"인지 알아 내야하는 인기있는 퍼즐 게임입니다. 대신 근처 타일을 클릭하여 인접한 광산의 수를 나타냅니다. 게임에 대한 한 가지 단점은 여러 가지 유효한 답변이 있고 추측 만 할 수있는 시나리오에서 끝날 수 있다는 것입니다. 예를 들어, 다음 보드를 보자.
1110
2*31
3*??
2*4?
112?
이 형식에서 숫자는 인접한 광산의 수, *
알려진 광산, "?"를 나타냅니다. 잠재적 광산을 나타냅니다. 이 특정 퍼즐의 불행한 점은 네 가지의 분명하고 유효한 잠재적 솔루션이 있다는 것입니다.
1110 1110 1110 1110
2*31 2*31 2*31 2*31
3*4* 3*5* 3**2 3**1
2*42 2*4* 2*4* 2*42
112* 1121 1121 112*
이것은 보드를 해결할 수 없음을 의미합니다 . 다음은 해결 가능한 보드 의 예입니다 .
1121
1??*
12?*
0122
이 보드는 유효한 솔루션이 하나만 있기 때문에 해결할 수 있습니다.
1121
1*4*
12**
0122
당신의 임무는 유효한 지뢰 찾기 보드를 가지고 그것을 해결할 수 있는지 여부를 결정하는 프로그램이나 기능을 작성하는 것입니다. "유효한 지뢰 찾기 보드"는 입력이 항상 직사각형이고 적어도 하나의 솔루션을 가지며 유효하지 않은 문자를 포함하지 않음을 의미합니다.
입력은 문자 배열, 문자열 배열, 개행 문자를 포함하는 문자열 등이 될 수 있습니다. 결과는 해결할 수 있으면 값이 정확하고 그렇지 않으면 거짓 값이어야합니다. 나는 성능에 대해 크게 걱정하지 않지만 솔루션은 모든 크기의 입력에 이론적으로 작동 해야합니다 .
평소와 같이 표준 허점이 적용되고 바이트 단위의 최단 솔루션이 승리합니다!
예 :
다음 예제는 모두 해결할 수 있습니다.
1121
1??*
12?*
0122
1110
1???
1110
0000
1110
3???
??20
*310
****
****
****
****
0000
0000
0000
0000
1100
*100
2321
??*2
13*2
1221
1*10
1110
1121
2*??
2*31
2220
1*10
다음 예제는 모두 해결할 수 없습니다.
1110
2*31
3*??
2*4?
112?
01??11*211
12??2323*1
1*33*2*210
12?2122321
13?3101**1
1***101221
1***
3*52
2*31
12??
02??
01??
00000111
000012*1
00001*21
22101110
**100111
?31123*1
?311**31
**113*20
2?
솔루션이 없기 때문에 실제 지뢰 찾기 게임에서는 얻을 수 없습니다. 따라서 "지뢰 찾기 보드"로 간주되지 않습니다 ... 예?)