목공책 하나 들이셔요~

2014년 3월 28일 금요일

스네이크 큐브 퍼즐 만들기

취미든 상업이든 목공을 하는 결과물은 고객님을 위한 것이죠. 저의 경우 아들이 최고의 고객입니다. 결과는 비록 신통치 않지만 아들을 위한 장난감을 여러가지 만들어 주었고, 지금도 인터넷을 돌아다니며 나무로 만드는 퍼즐이나 장난감을 보면 무조건 담아둡니다.

최근에 완델씨가 스네이크 퍼즐 만드는 과정을 올렸길래 잽싸게 번역해 보았습니다. 언젠가 만들어 보아야지요.

그런데 스네이크 퍼즐은 장난감이 아니라 과학이네요.   http://woodgears.ca/puzzles/snake_cube.html


저는 위와 같은 형태의 스네이크 큐브 퍼즐을 선물 받은 적이 있습니다. 저는 이 퍼즐을 모임 장소에 가지고 나가곤 했는데 그때마다 이 퍼즐에 완전히 빠져서 집착하는 사람들을 보고 깜짝 놀랐습니다.

그래서 저는 이 퍼즐을 만드는 과정도 좋은 퍼즐이 될 것 같다는 생각이 들었습니다. 정육면체들은 뚫려있는 구멍들 사이로 노끈(string)에 의해 연결되어 있고 마치 뱀같이 구불구불하고 깁니다.

먼저 밝은 색의 메이플과 어두운 색의 마호가니 판재를 준비해서 20mm 폭으로 켭니다. 결과적으로 20mm 폭에 20mm 두께의 긴 각재를 뽑아내어야 합니다.


다음으로 제가 만든 작은 테이블쏘 썰매를 이용하여 20mm 길이로 잘라서 정육면체를 만듭니다. 반복적으로 똑같은 길이로 자르기 위해서는 막대기 하나를 썰매의 오른쪽에 클램핑하고 버니어 캘리퍼스로 톱날과 막대 사이의 간격을 정확하게 20mm로 맞추어 주면 됩니다.


밝은 색의 블록과 짙은 색의 블록을 교대로 배치하며 이들을 줄로 연결해야 합니다. 그런데 조립해서 큐브를 만들 수 있으려면 어떤 블럭은 구멍이 관통해야 하고, 어떤 블럭은 구멍이 90도로 뚫려야 합니다. 이는 다소 복잡한 규칙을 따르지 않으면 큐브가 완성되지 않기 때문에 신중해야 합니다.

저는 이미 가지고 있는 완성된 스네이크 큐브가 있기 때문에 이를 바닥에 펴놓았습니다. 그리고 이 큐브에서 구멍이 관통되는 블럭의 위치를 찾아 새로 구멍을 뚫을 블럭을 올려 놓습니다. 다른점이 있다면 이번에는 색을 바꾸어 본 것입니다. 밝은색의 블럭 위에는 짙은 색을, 짙은 색의 블럭 위에는 밝은 색을 올려 보았습니다.


새로 스네이크 큐브를 만들고자 한다면 이미 만들어진 큐브를 펴놓은 사진을 놓고 비교해 가면서 블럭을 연결하는 것이 쉽습니다. 예를 들어 아래 사진을 실물과 같은 크기로 인쇄해서 여기에 블록을 올려가면서 만들면 됩니다.


구멍이 관통되는 블럭을 먼저 드릴로 구멍을 뚫어줍니다. 구멍의 직경은 연결하는 노끈의 직경보다 약간 크게 하면 됩니다.


직각으로 구멍을 뚫어야 하는 블럭은 좀 까다롭습니다. 단순히 노끈의 직경보다 좀 크게 구멍을 뚫을 경우 직각으로 꺽인 구조 때문에 노끈을 넣기가 매우 어렵습니다.


구멍을 더 크게 뚫어서 문제를 해결할 수도 있습니다. 제가 선물받은 스네이크 큐브가 그렇게 만들어 진 것인데 가만히 보면 직각으로 뚫린 블럭이 딱 맞게 정렬되지 않고 한쪽으로 틀어진 것을 볼 수 있습니다. 구멍이 너무 커서 유격이 너무 많기 때문에 발생하는 현상입니다.


큰 구멍을 뚫는 대신에 저는 다른 방법을 시도했습니다. 위 그림의 오른쪽 처럼 구멍을 뚫을 면에 수직 구멍을 얕게 판 다음 이 두 홈을 연결하는 대각 구멍을 뚫는 방법입니다. 그냥 대각 구멍을 뚫을 수도 있겠지만 이 경우 정확하게 중앙을 뚫기가 까다롭고 구멍의 날카로운 각 때문에 노끈이 끊어질 수도 있습니다.

저는 대각 구멍을 뚫기 위한 간단한 지그를 만들었습니다. 지그는 대각선으로 블럭을 잡고 있을 수 있는 45도로 기울어진 홈이 있습니다.




구멍뚫기가 끝이 나면 블럭의 날카로운 모서리를 샌딩기로 둥글게 만들어 줍니다. 선물받은 큐브는 샌딩이 되어 있지 않아서 매우 날카로웠습니다. 이 작업은 시간이 굉장히 많이 걸리고 지루한 작업이었습니다. 지금 생각해보니 정육면체 블럭으로 자르기 전 긴 각재일 때 샌딩기로 긴 네 모서리를 부드럽게 굴려줬다면 더 편했을 것 같습니다.


양 끝에 놓일 두개의 블럭은 10mm 드릴 비트로 3/4 깊이 정도 보링해 주었습니다. 이 구멍에는 노끈의 끝 매듭이 들어갈 것입니다. 매듭은 히트건으로 녹여서 풀리지 않도록 합니다.


한쪽 끝 블럭에 매듭을 넣었으면 이제 차례대로 블럭들을 끼웁니다. 90도로 꺽이는 부분도 대각선 구멍을 뚫었으므로 쉽게 꿸 수 있습니다.


모두 다 끼웠으면 다른 쪽 끝을 바이스그립으로 고정하고 제대로 끼웠는지 확인해 봅니다.


만들다 보니 블럭에 바니쉬를 바르는게 좋을 것 같습니다. 그래서 다시 모두 분해해서 종이 타올에 바니쉬를 묻혀서 두드리듯이 발랐습니다. 붓으로 바를 경우 구멍에 바니쉬가 너무 많이 들어가 구멍을 막을 수도 있어 곤란합니다. 스프레이를 뿌리는 것이 더 좋을 수 있지만 저는 실내에서는 스프레이를 뿌리지 않습니다. 게다가 겨울이라 밖이 너무 추웠습니다. (완델씨는 캐나다에 삽니다. 겨울에 매우 춥죠)


만일 새로 만든다면 구멍을 뚫기 전에 바니쉬를 먼저 바를 겁니다. 아니 더 좋은 방법은 토막을 내기 전 각재 상태일 때 바니쉬를 바르겠습니다. 이렇게 하면 블럭의 마구리면만 바니쉬를 바르면 되니 더 수월합니다.


까다로운 문제가 하나 더 있는데 그건 한쪽 끝 매듭이 블럭에 고정된 상태에서 어떻게 노끈을 타이트하게 당기느냐는 겁니다. 해보시면 아시겠지만 반대편 매듭을 묶으면서 타이트하게 노끈을 당기는 것은 거의 불가능합니다.

그래서 저는 중간에 있는 관통 블럭 하나를 쪼갰습니다. 왜냐하면 이 블럭을 빼고 최대한 타이트하게 노끈을 고정시킨 다음 이 쪼갠 블럭을 다시 끼워넣으면 훨씬 더 타이트하게 연결할 수 있기 때문입니다. (블럭을 쪼개려면 결방향으로 폭이 넓은 끌을 중앙에 대고 망치를 때립니다. 즉 마구리면을 쳐야 잘 쪼개집니다)



하나의 블록을 빼고 매듭을 묶을 것이라 할지라도 충분히 타이트하게 연결해야 할 필요가 있습니다. 전체를 연결해놓고 끝에서 노끈을 당기는 것은 한계가 있습니다. 중간에 있는 90도로 꺽어진 부분에서 마찰이 많기 때문입니다. 그러므로 두세개 블록씩 나누어서 조금씩 당겨가면서 전체적으로 타이트하게 만들어 주면 좋습니다. (아래의 동영상을 보시면 이해되실 겁니다)


노끈의 매듭을 묶는 동안 타이트하게 당긴 노끈이 풀리지 않도록 롱노우즈 펜치와 바이스그립을 사용하여 고정합니다. 최대한 타이트하게 매듭을 묶은 후에 히트건을 이용하여 매듭을 녹여 풀리지 않게 합니다. 이때 얇은 합판을 끼워서 바니쉬가 열에 의해 손상되지 않도록 합니다.


마지막으로 아까 쪼갠 블럭을 제자리에 끼워놓고 나머지 반쪽에 본드를 바른 다음 감쪽같이 붙입니다.

많은 사람들이 왜 잘 늘어나는 고무줄을 사용하지 않느냐고 묻는데 고무줄은 별로 좋지 않습니다. 이 긴 스테이크 퍼즐이 제대로 모양을 잡고 있으려면 아주 강한 장력(tension)이 필요합니다. 그런데 고무줄은 노끈에 비해 잘 늘어나기 때문에 충분한 장력이 보장되지 않습니다. 게다가 고무줄은 시간이 지남에 따라서 조금씩 늘어납니다.


양 끝 블럭의 10mm 구멍을 막을 목심을 만들기 위해 목심 제조 비트(plug cutter)를 사용합니다.


















만들어진 목심은 밴드쏘로 끝부분을 잘라주면 떼어낼 수 있습니다. 이렇게 만들어진 목심은 약간 경사가 진 원뿔형입니다. 모양에 유의하여 본드를 바른 구멍에 꽉 끼워넣습니다.


튀어나온 목심은 밴드쏘로 약간만 남기고 대충 자른 다음 날카로운 끌로 깨끗하게 정리해 줍니다. (아래 영상을 통해 확인하세요)

제가 선물받은 스네이크 퍼즐도 양끝 블럭에 목심이 박혀있습니다. 하지만 목심 박힌 사이로 노끈의 끝부분이 약간 보입니다. 아마도 끝을 타이트하게 당긴 상태에서 본드를 바른 목심을 박아넣고 튀어나온 부분을 잘라낸 것 같습니다. (즉 매듭을 묶지 않았습니다)


이제 완성되었습니다.

제가 선물 받은 것보다 훨씬 정교하게 만들어진 것 같습니다. 하지만 구멍이 훨씬 작기 때문에 블럭을 회전시키고 비트는데 힘이 많이 듭니다. 다음번에 만들 때는 구멍의 직경을 좀 더 키워야 할 것 같습니다.

아래 제작 과정을 동영상을 꼭 보셔야 어떻게 만드는지 이해가 되실 겁니다.


스네이크 큐브 퍼즐 푸는 방법

스네이크 큐브 퍼즐을 푸는 방법은 그리 쉽지 않습니다. 스네이크 큐브 퍼즐은 관통 블럭과 90도 블럭의 배치에 따라 푸는 방법과 그 해답의 갯수가 모두 다른 특징이 있습니다. 그리고 수학적으로 이 퍼즐을 분석해보면 해밀턴 경로(Hamiltonian Path) 문제라는 걸 알 수 있습니다. 해밀턴 경로는 어떤 그래프(graph)에서 모든 꼭지점을 단 한번만 지나는 경로를 찾는 문제입니다.


쉽게 설명하면 위의 그림에서 그래프는 꼭지점과 이를 연결하는 선분으로 구성되어 있는데 모든 꼭지점을 지나면서도 선분이 서로 교차하지 않는 경로를 찾는 문제입니다. 그런데 모든 그래프가 해밀턴 경로를 가지지는 않으며, 어떤 그래프에서는 해밀턴 경로의 해답이 여러개 있을 수도 있습니다.

해밀턴 경로 문제는 대표적인 NP-완전 문제(NP-Complete) 중 하나인데 NP-완전 문제는 다항시간에 푸는 해가 없는 문제를 의미합니다. 쉽게 얘기하면 NP-완전 문제는 근사해를 구하는 비교적 빠른 알고리즘은 있을 수 있지만, 최적해를 구하는 방법은 전수검사(Exhaustive Search)가 거의 유일한 것이라고 보면 됩니다. 마치 해커가 8자리의 암호를 맞추기 위해 모든 조합의 숫자를 대입하는 것과 유사합니다.

한편 프랑스의 한 수학자가 스네이크 큐브 퍼즐을 수학적으로 분석하고 모델링하여 Mathematica로 모든 퍼즐에 대해 전체 해를 구하는 프로그램을 만들어 공개했습니다. 원문을 보려면 아래 링크를 참조하세요. CDF Player를 다운받아 이 프로그램을 직접 실행할 수도 있습니다.

http://oscar6echo.blogspot.kr/2012/09/snake-cube.html

이 분의 분석에 의하면 대칭 및 회전을 배제한 (palindromic) 스네이크 큐브 퍼즐의 패턴은 총 77개가 있으며, 해가 하나인 패턴에서 해가 45개인 패턴도 있으며 2개에서 11개의 관통 큐브를 사용한다고 합니다. 그리고 대부분의 장난감 가게에서 파는 스네이크 큐브는 6~7개의 관통 큐브를 사용하고 해는 오직 하나만 있는 것이라고 합니다. 그러니 한번 헝클어뜨리면 다시 맞추기가 매우 어렵지요.

자신의 어린 조카가 어느날 이 퍼즐을 들고 왔길래 무심코 풀어보았는데, 아무리 노력을 해도 다시 원래 큐브 모양으로 만들 수가 없더랍니다. 그래서 수학적 분석을 해보기로 마음 먹었다고 하네요.

Mathematica 프로그램을 실행하면 다음과 같이 큐브를 풀 수 있습니다.


퍼즐의 대부라 할 수 있는 Jaap Scherphuis의 홈페이지에도 스네이크 큐브 퍼즐 풀이법에 대한 상세한 설명과 Javascript로 만들어진 프로그램이 제공됩니다.

http://www.jaapsch.net/puzzles/snakecube.htm

특히 이곳에서 제공되는 Javascript 시뮬레이터가 인상적인데 이를 통해서 여러가지 스네이크 큐브 패턴을 만들어보고 해를 구하고 실제로 클릭을 통해 퍼즐을 풀어볼 수도 있습니다.

예를 들어 Cubra Orange라는 패턴을 읽어들여 SOLVE 버튼을 누르면 해 중의 하나를 보여줍니다. 다시 SOLVE를 클릭하면 다른 해도 보여줍니다. 물론 직접 만지작 거리면서 푸는 것이 퍼즐의 묘미겠지만 스트레스를 너무 받는다고 생각되면 이 시뮬레이터를 이용하여 힌트를 얻는게 좋겠지요.


이 시뮬레이터를 통해 새로운 패턴을 만들고 시험할 수도 있습니다. 중간에 있는 스네이크 큐브의 펼쳐진 모양의 큐브를 클릭하면 관통큐브 <-> 직각큐브로 모양이 바뀝니다. 이를 통해서 새로운 큐브 패턴을 만들어 볼 수 있습니다. 하지만 반드시 SOLVE 버튼을 눌러 해가 있는지 확인하세요. 해가 없으면 아래와 같이 에러가 표시됩니다. 혹은 MIX 버튼을 계속 눌러서 새로운 패턴을 만들어 낼 수도 있습니다.


손으로 직접 이 퍼즐을 푸는 일반적인 힌트는 다음과 같습니다.
  • 큐브는 모두 27개 밝은색과 어두운색 큐브가 엇갈리게 되어 있다면 한쪽이 하나가 더 많습니다. 여기서는 밝은색이 하나 더 많다고 가정합니다. 그러면 밝은색은 스네이크 퍼즐의 양쪽 끝에 위치합니다. 그리고 밝은색 큐브는 항상 완성된 큐브의 가장자리나 면의 한 가운데 위치하게 됩니다. 이 원칙을 명심합니다.
  • 관통큐브가 인접하게 여러개 있다면 그곳을 먼저 푸는 것이 해결에 도움이 됩니다.
  • 만일 밝은색 큐브가 관통 큐브라면 그 큐브는 반드시 완성된 면의 가운데에 위치하게 됩니다. 이게 매우 유용한 힌트가 됩니다.
어쨌든 완델씨가 만든 퍼즐을 푸는 방법은 다음 동영상을 참조하시면 됩니다.


>>> Miscellaneous Remarks, Ideas, Trials_ Snake Cube.pdf  다운로드
>>> snakecubej.htm  다운로드

댓글 없음:

댓글 쓰기