하노이타워

FrontPage|FindPage|TitleIndex|RecentChanges| UserPreferences P RSS
임을통한수학공부를 할 수 있는 게임.

글꼴 설정에 따라 위치가 다르게 보일 수 있다.

   ┌─┐
   └─┘
  ┌──┐
  └──┘
 ┌───┐
 └───┘
 ---------     ---------     ---------

준비물

  • 3개의 크기가 다른 물건.(쌓으면 피라밋 모양을 만들 수 있는...) 예)초코파이>약과>산도
  • 동그라미 세개가 그려져 있는 도화지 혹은 동그랗게 오린 색지 3개. (뭐 꼭 동그란 모양일 필요는 없다.)

게임 목표

  • 큰 물건이 밑에 오도록 피라밋 모양의 탑을 쌓는다.
  • 준비한 3개의 공간 중 한쪽 끝에 탑을 놓는다.
  • 탑 전체를 반대쪽 끝에 이동시키면 성공.

규칙

  • 한번에 한 층밖에 옮기지 못한다.
  • 작은 층 위에 큰 층이 올 수 없다.
  • 한번에 한칸씩만 옮길 수 있다. (??) (<-) EdouardLucas가 만든 원래의 하노이타워에는 없는 조건인데요... :(
    이 규칙만 없으면 밑에 2^n-1번이 맞는 말입니다. 그리고 원래 문제에서는 세 개의 공간이 정삼각형을 이루고 있죠...
    이 규칙이 있으면, f(n)=3f(n-1)+2 --Dennis

게임을 통한 학습

  • 처음엔 단순히 게임 과제를 완수하도록 한다. 다음번엔 몇번의 이동으로 성공할 수 있는지 횟수를 기억하게 한다. 다른 친구들과 서로의 횟수를 비교해 본다. 최소의 횟수로 이동하는 법을 연구하도록 한다.
  • 최소의 횟수로 탑을 옮길 수 있는 원리와 공식을 끌어낸다.

심화학습 (숙제로 할 수 있는 것)

  • 4층 탑을 만들고 (두 층은 기존의 물건을, 두 층은 직접 만들게 한다.) 4칸의 받침대를 만들고 최소한의 횟수로 탑을 이동하는 방법을 연구해 오도록 한다. 탑의 주제와 이름을 정하고 창조적으로 만들어 오도록 한다.
  • 5층 이상의 탑을 연구하고 원리를 찾아내는 아이들이 있을 수도 있다. (켁..어렵다.)

원리 연구

방금 시도해 보니 이거 생각보다 어렵더군요. 3층의 경우는 최소 횟수가 26번이 확실 한 것 같은데4층의 경우 50번>34>46>44>34 휘유...34번 같군요. 5층 58번. 이거 층수에 따른 최소 횟수를 구하는 공식을 유도해 낼 수 있을까요?

제일 아래 판을 제외한 위 판들을 가운데 판으로 옮기고, 제일 아래 판을 제일 오른쪽 판으로 옮기고 다시 나머지를 오른쪽 판으로 옮기는 것을 반복하면 됩니다. 즉, 젤 아래 판을 제외하고, 나머지 윗 판들을 목적하는 탑이나 현재 탑이 아닌 나머지 탑으로 옮기고, 젤 아래 판을 목적하는 탑으로 옮긴 후, 다시 나머지 윗 판들을 목적하는 탑으로 옮기면 됩니다. 윗 판들을 옮길 때에는 목적하는 탑이 "나머지 탑"이라 생각하고 옮기면 되죠. 판이 n개일 때, 횟수는 f(n)=2*f(n-1)+1이 됩니다.
간단하게 2^n-1 이면 됩니다. 1개=1, 2개=3, 3개=7, 4개=15, 5개=31, ... 물론 위의 점화식을 풀면 나옵니다.


f(3)=2*f(2)+1
f(2)=2*f(1)+1
f(1)=1
따라서 f(3)=2*(2*1+1)+1=7

음...잘 이해가 안가는데요...혹시 다른 게임 아닌가요? 3층은 26번 옮겨야 되던데...그리고 하노이타워는 뭔가요?

앗! 제가 말한 게임은 4번째가 규칙 위반입니다. 건너 뛸 수 없습니다. 한번에 한칸만... 첫번째와 일곱번째는 두번 움직인 것으로 계산하고요.
비슷해 보이지만 전혀 다른 게임이군요. 횟수가 2의 지수승인 경우는, 배열을 원형으로 하면 됩니다.


=======
 1 . .
 2 . .
 3 . .
=======
 . . .
 2 . .
 3 . 1
=======
 . . .
 . . .
 3 2 1
=======
 . . .
 . 1 .
 3 2 .
=======
 . . .
 . 1 .
 . 2 3
=======
 . . .
 . . .
 1 2 3
=======
 . . .
 . . 2
 1 . 3
=======
 . . 1
 . . 2
 . . 3


IanStewart가 제시한 그림과 같은 풀이도 있습니다. 매우 직관적이고 깔끔하죠. :)

원반의 개수가 많아지면 SierpinskiGasket이라는 프랙탈 도형에 가까워집니다. 오른쪽은 원반이 5개일 때의 그림입니다.


  • 하노이 : 베트남의 수도
  • 베나레스 : 인도의 도시 이름
  • 하노이타워에 대한 좀더 자세한 내용은 [http]매쓰통에서 볼 수 있다

보충문제

지겨운 수업시간에 한번씩 내는 문제이다. 위의 문제에 더하여... 옮길 곳은 두군데이다. 마지막 쌓이는 곳을 바로 옆으로 하기 위해서는 어떻게 해야하는가? 혹은 제일 오른쪽으로 하기위해서는?


"; if (isset($options[timer])) print $menu.$banner."
".$options[timer]->Write()."
"; else print $menu.$banner."
".$timer; ?> # # ?>