지뢰찾기 하는 방법 고급편

4 comments

지뢰찾기의 본질에 대해서….

(이 글은 지뢰찾기를 하는 방법에 대한 마지막 글입니다. 초급자는 초급편을 봐주시기 바랍니다.)

언제 처음 생겼는지는 모르겠지만, MS-windows, OS/2, Linux, Unix 등의 운영체제에 기본탑재되면서 수많은
사람들이 즐겨 하던 오락인 것을 생각할 때 최소한 25 년 이전에 만들어진 오락같다. (위키피디아를 찾아보니 1989년 로버트 도너에 의해 처음 개발됐다고 한다. 생각보다는 오래된 게임이 아니다.) 떠도는 소문에 의하면 MIT의 천재들을 범재로 만드는데 일조한 오락이며, 다른 말로 시간 죽이기 게임으로 통하기도 한다.
보통 한 판 하는데 2~3 분 정도 걸리고, 어떤 때는 한 번 깨는데 30 분 이상씩 걸리기도 하니(찍기에서 잘못찍어 죽는 경우가 많다.) 수많은 천재들이 밤을 지새면서 지뢰를 제거하여 세계의 평화는 지켜졌는지 몰라도 천재의 인력낭비를 심하게 초래한 오락임에는 분명하다. 어디 MIT의 천재들 뿐이겠는가? 그러나….

지뢰찾기는 NP문제, 즉 풀이시간을 최대한 짧게 하는 방법을 알아내기는 매우 어려운 문제라는 것이 수학적으로 밝혀졌다. 뿐만 아니라 답이 있는지 없는지를 직접 해보지 않으면 알 수 없다는 것도 수학적으로 밝혀졌다. 즉 이산수학의 한 분야가 될 수 있다. 실제로 해보면 찍기 없이 깰 수 있는 판은 10%가 채 되지 않는다. 즉 답이 없는 경우가 대부분이다.
수많은 천재들이 지뢰를 제거하느라 낭비된 이 시간들은 결국 수학이 발전하는데 밑거름이 됐을 것이라 생각한다.

이러한 오락을 내가 처음 시작한 것은 MS-windows 3.1에 포함된 것을 만나면서부터 였다. (windows 3.0에는 지뢰찾기가 없었다.)] 지뢰찾기가 묘한 매력이 있어서 폭 빠졌었는데, 당시에는 약 175 초 정도가 최고기록이었다.

시간이 지나서 2003 년경부터 조금씩 다시 시작해서 시간을 점차 단축하여 최근 90초까지 최고기록을 단축했다. 요즘에는 100 초 이내에 깨는 것은 별로 어렵지 않으니 많이 발전된 것 같다. (결국 최고기록은 80초에서 멈췄다.)

WindowsXP에 포함된 지뢰찾기

지뢰찾기를 하는 방법은 대부분 초급편에서 이야기를 끝냈지만, 초급편처럼 하면 당연히 모든 숫자의 연산의 연속이었다. 모든 연산을 일일히 해가면서 지뢰를 찾다보니 최고기록은 150 초 정도까지 가능했지만 더는 불가능했다. 150초 이내로 들어서는 최고기록을 이루자니 뭔가 다른 것이 필요했다.

그래서 다음 방법으로 생각한 것이 자주 나오는 경우를 공식화 하는 것이었다. 그러나 공식을 약 10 가지 정도 만들면 공식화할 모양도 더는 없다. 깰 수 있는 경우는 거의 10 가지 정도의 반복이기 때문이다. 또 이때 해야 하는 것은
찍어야 할 모양이 나오면 재빨리 눈치채고 찍는 기술이다. 한 눈에 찍어야 하는지 풀어야 하는지 파악해야 한다는 것이다. 대략 이정도의 기술을 이용해서 지뢰찾기를 하니 약 120 초 정도의 최고기록이 나왔다. 이때 ‘아마 100 초
안에 끝낼 수 있는 사람이 그리 많지 않을거야’라고 생각하면서 지뢰찾기를 포기했다.


시간이 흘러서 어느날 문뜩 지뢰찾기가 생각나면서 더 기록을 단축할 방법을 생각하게 됐다. 어떤 방법이었을까? (이건 너무 부끄러워서 비밀이다. ㅋ) 아무튼 새 방법을 적용하자 104초라는 당시로서는 경이적인 기록을 얻을 수 있었다. 그리고 열심히 노력해서 결국 100 초라는 기록을 얻으면서 최고기록은 다시 한 번 정체기를 지나게 된다. 그리고 결국 다시 그만두게 된다. 지뢰찾기란 계속 한다고 기록이 계속 단축되는 것은 아니더라……

기록이 정체될 때마다 한 번씩 뭔가 뛰어넘을 패러다임을 하나씩 요구한다. 패러다임을 하나 발견해 낼 때마다 약 15~20 초 정도의 기록을 단축할 수 있는 것 같다.

가장 최근 100 초에서 90 초까지 최고기록을 단축하는 데에는 지뢰들을 새로 보는 눈을 필요로 했다. 나는 왼쪽 클릭만으로 깨는 연습을 했고, 왼쪽 클릭만으로 185초 정도에 깨게 되자 별로 어렵지 않게 91초의 기록을 만들어낼 수 있었다. 지금은 90초대의 기록을 만드는 건 어렵지 않다. 이 정도의 기록이 내가 사용하는 방법에 대한 거의 최고기록일 것 같다.


지뢰찾기를 빨리 하는 방법은 빨리 계산해서 지뢰자리를 찾는 것보다 클릭 수를 줄이는 것이 중요했다. 60 초의 기록은 그렇게 해서 가능할 것이라고 생각한다.

아무튼 최종적으로…
지뢰찾기의 본질은 행동과 생각의 효율을 최적화 하는 것이다.
행동과 생각의 효율을 최적화하는 방법에 대해서는 조금 더 할 이야기가 있지만 생략하자. 다만 아무리 행동이 빠른 사람도 행동이 생각보다 빠를 수가 없다. 따라서 지뢰의 위치를 머리속에 넣어놓고 최대한 클릭수를 줄이는 것이 행동과 생각의 효율을 최적화에 가까운 방법이다. 그리고 하나 더 이야기하자면 게임할 때 생각하는 순서, 방향 등도 공식화해야 한다는 것만 기록해 놓는다. 이는 간단하게 말해서 깰 때 도는 방향을 시계방향이나 반시계방향으로 정해놓아야 한다는 것이다. 이때 최고기록을 빠르게 하는 것과 평균기록을 빠르게 하는 것은 약간 다르다. 그러나 최고기록이 빨라질수록 평균기록도 빨라지므로 관계가 없는 것은 아니다. 이러한 요소는 옆에서 구경만 해서는 절대로 익힐 수 없다.

결국…. 30 초대에 깨는 사람들이 무섭다. ^^;;;;

ps.
그러나 중요한 것은 어떻게 하면 패러다임을 바꾸고, 그 변화에 행동을 동조화 시킬 수 있느냐 하는 것이다. 지뢰찾기는 이러한 패러다임을 형성하고 변화시킬 수 있는 경험을 얻을 수 있는 게임이기 때문에 어렸을 때 해볼 것을 권해본다. (이는 바둑도 비슷하다. 바둑을 배우는데 집중력을 높인다거나 하는 헛소리는 하지 말자.) 그러나 나는 행동이 느린고로 아무리 해도 최고기록 60 초는 거의 불가능할 것 같다. ^^;;;

ps.
“지뢰찾기 하는 방법” 두 편을 모두 보신 분들은 느끼셨을 것이 두 편에서 이야기하는 내용은 방법의 차이만 나지 실제로는 똑같다. 결국 제대로 된 지침이라면 초급편이나 고급편이나 다를 수가 없을 것이다. 다만 받아들이는 사람들의 수준이 차이가 나므로 표현이 바뀔 수밖에 없다. 만약 내가 초급자에게 이 글을 디밀고 따라하라고 하면 초급자는 어떻게 받아들이고, 어떻게 따라할까? 아마 의도하지 않은 방향으로 전개될 것이다.

4 comments on “지뢰찾기 하는 방법 고급편”

  1. 음… 다음 문장…
    “지뢰찾기는 NP문제, 즉 답이 있는지 없는지를 직접 해보지해보지 않으면 알 수 없다는 것이 수학적으로 밝혀졌다” 은 NP문제란 직접해보지 않으면 답이 있는지 없는지 알 수 없는 문제를 말하는구나 하고 오해 할 소지가 있어… 다소 적절하지 못한 문장으로 보입니다.
    대표적 NP문제인 세일즈맨 문제(미국의 모든 주를 방문하는 최소거리)의 경우만 봐도… 답이 분명 존재한다는 것은 직관적으로 명확합니다. 아시겠지만 … NP문제의 직접적 의미는 문제의 Size가 증가할 경우 풀이에 드는 시간은 다항항수가 아닌…(..더 급격한) 방식으로 증가한다는 뜻입니다…

댓글 남기기