ハノイの塔Tower of Hanoi 2進数との関係

 左側Xに積まれている板を一枚ずつ動かして、右側Zへそのままの順番で積み上げてください。図Aから図Bへ。 ただし、動かす板は自分より小さな板の上に乗せることは出来ません。中央Yも利用できます。  一番少ない回数で完了して下さい。
簡単にするため、図AではXに4枚の板を大きさの順に番号を付けて積み上げてあります。何回で図BのようにZへ移動できるかやってみましょう。

X  Y  Z

(順番) 移動板番号→移動場所です。

   (00001)  1→Y (空)
         (00010)  2→ Z(空)  2ケタ
(00011)  1→ 2
            (00100)  3 →Y(空) 3ケタ
(00101)  1→ 4
(00110)  2→ 3
(00111)  1→ 2
       (01000)  4→ Z(空) 4ケタ
(01001)  1→ 4
(01010)  2 →X
(01011)  1→ 2
(01100)  3→ 4
(01101)  1→ Y
(01110)  2→ 3
      (01111)
  1 →2 移動完了

図A

図B

図C(途中手番 0111)

順に2進数でカウントしながら、全手数を順に並べてみました。面白いことが分かってきます。
(1)奇数回目には、1番の板を動かす。つまり1番の板は他の板と交互に動かす。
(2)初めて1番の板を動かすのは 0001回目、
  初めて2番の板を動かすのは 0010回目、
  初めて3番の板を動かすのは 0100回目、
初めて4番の板を動かすのは 1000回目、
  これは、20 21 22  23 です(拡張 出来そう)。 下にアニメ画像があります。 全15 手数中で集中したいのは 移動する板の番号です。
(3) 図Cをご覧ください
  3枚の板をYに順に積み重ねた後、次には4番をZに動かし、
その4番の上に再び3枚の板を移動して4枚の板の移動が完了します
(再帰さいき)。
この手順が最小ですが証明を略しますから感じ取って下さい。


 一般的に、n枚の板をXからZへ移動する場合も同様です。

 上からn枚の板が移動完了するまでの回数を Pn とおくと、
(3)で述べたように

    Pn=Pnー1+1+Pn−1
       =2Pnー1+1 ……�    ,燭世掘◆。�1=1 ……��
   �,鯤儼舛靴董。�n+1=2(pn−1+1)
     n=2 のとき P2+1=2(P1+1)=22  ( �‖綟�)
     n=3 のとき P3+1=2(P2+1)=23
     n=4 のとき P4+1=2(P3+1)=24
         …     …
              Pn +1 = 2n
         故に  Pn=2n−1
    勿論 n=4 のとき P4=24−1=15 (回)でもあります。 

ハノイの塔 4枚手順 アニメ画像


 

Tower of Hanoi (ハノイの塔)を遊ぶため(?)のとてもきれいな 英語サイトを見つけました。板の枚数は最大N=10まで増加することが出来ます。動きは自動(Fast/Slow)と手動があり便利です。下記アドレスをクリック で動きます。ただしWindows上で Javaテクノロジを許可してやらないとダメなようです。自己責任(じぶんのせきにん)ですよ。


 http://www.cut-the-knot.org/recurrence/hanoi.shtml

数当てゲーム

2進数との関係をさがそう

口上は次の通り

 さーてお立会い。次の5枚のカードに数字が1 6個ずつ書いてあります。
この中からどれか数字を1つ頭にしまってください。それはどれとどれのカードにありますか(^o^。)
youは 「チョメチョメ」 あらそうですか、ではその数字を当ててご覧にいれま〜す。

youが仮に14を覚えたとすると、それは BとCとD のカードに あると告げるでしょう。
meはそれを聴いて、 2+4+8 を計算してそれは 14 だと答えます。つまり、 
  A→1  B→2  C→4  D→8  E→16 をそれぞれ当てて計算します。

図に、5ビット列が出てきました。上のカードに対応します。
カードAには0番ビットがONになる5ビット2進数を全部含めています。以下同様にして、
Bには1番ビットがON、 Cには2番ビットON、  Dには3番ON、 Eは4番ONです。*印はON、OFFどちらでも構いません。
 youのように B C Dに含まれており、A E にはないと言いますと、それは  01110(2進) ということになります。
2進数の性質を見事にとらえています。
 さて、カードA B E に あるとMeは告げています。その数を当てて見ましょうm(^_^)m。
自分でもいろいろ作って遊びをやって見ましょう。下の図のカードも理屈は同じですが、少しだけ「ひねり」が入っています。下の図で B C D にあると告げられたら、覚えた数は 12 です。

また、カードA B E に あるとmeは告げています。その数を当てて見ましょうm(^_^)m。 「ひねり」が分かると簡単ですね。

偽(にせ)金貨

2進数を利用して解決する

 金貨を一杯詰めこんだ袋が5つあります。各袋は全てが本物の金貨であるか、全てが偽の金貨であるかいずれかです。金貨は外見では区別がつきませんが 本物の金貨は1枚100グラムであるのに対し、偽の金貨はどれも本物より1グラムだけ軽く造られています。
重量秤(はかり)を1回だけ使って、どれが偽金貨の入った袋であるか見分けて下さい。 クラシックな有名な問題です。ヒントとして2進数を利用すると申しておきます m(^_^)m
更に、これは袋が幾つあっても秤を1回だけ使って見分けられると言うから驚きです。

3山くずし(順型)

2進数で必勝パターン


大変ポピュラーで石取りゲームなどとも呼びます。A、B、Cに適当に石が山になっています。2人が交互に石を取っていき、最後に全部の石を取った方が勝ちです。
3山くずしのルールは単純で、 (1)いずれか1つの山から取る (2)そのとき幾つ取ってもいいが、パスは出来ないというものです。この3山くずしには先手必勝パターンと後手必勝パターンがあります。さてme は、
上図 (A…7個、B…4個、C…3個)のようにしてから、相手に手番を渡しましたが、これは me の必勝パターンです。2進数とどんな関係があるのか調べてみます。  以下(A,B,C)と表記するのは、次に相手に手番を渡すときの、 A,B,C それぞれの石の個数を表すものとします。

� 。瓜海砲靴徳蠎蠅房衄屬鬚錣燭垢班蕕院�つまり (A,B,C)=(0,0,1)は負け。
 2山にしてわたすときは、同個数の石のとき勝ち、異なる個数の石のとき負け。
 つまり(0,1,1)は勝ち、(0,1,2)は負け。

�◆�m, n≧1 , m≠n  のとき、(A,B,C)=(m,m,m),(m,m,n)は負けパターン。つまり (1,1,1),(1,1,2) のように、同数の山があるときに手番をわたすと負け。

�� よって相手に�´△良蕕吋僖拭璽鵑鮑遒蕕擦襪燭瓩砲蓮�me は(A,B,C)= (1,2,3) として渡すといいことになります。 
ここで再登場するのが、論理演算(2進ビット演算)XOR (演算子)です。 表は2進表記してXORを調べてみました。  勝ちパターンは、
 011011 = 00 つまり
 ABC = 0 のようになっています。
�� �� �� �� �� ��
  勝負 勝ち 勝ち 負け 負け 負け 負け
A 01 0 00 0 1 01
  B 10 1 01 0 1 01
  C 11 1 10 1 1 10
XOR 00 0 11 1 1 10

上例 (A…7個、B…4個、C…3個)はme の必勝パターンといいましたが、次表で me と you の対戦例を示しました(残りの石数)。me は毎回 XOR が0になるように、石を取っています。you は1つの山のビットを反転させなければならないので、XORを0に出来ません。パターン(1,2,3,)へ導く例として参考にして見ましょう。
    me you me you me you me
A 7 111 110 110 101 101 101 10
B 4 100 100 100 100 100 011 11
C 3 011 011 010 010 001 001 01
XOR   000 001 000 011 000 111 00

さて 3山くずしで、最後に全部の石を取った方が勝ちとしましたが、これを「順型」とします。別に、最後に石を取らされたら負けとするのもあり、これを「逆型」といいます。これは少し難しいように思います。
また、4山や5山にして遊ぶことも可能ですから楽しんで見るのがいいでしょう。

前回答え 情報試験出題方式

ア) 符号部:0 正の数、指数部: 1、仮数部 0. 5  → 2 1×0. 5 = 1

イ)符号:正の数、指数部:1001 は 0111= 7(10)の補数表示、仮数: 0. 5
   → 2 -7×0. 5 = 0. 00390625 (有限小数)

エ)負数 -2 1×0. 5 = - 1

前回答えIEEE754 方式(単精度)

�� 5. 75= 101. 11(10) = 1. 0111×2 2符号部: 0、指数部: 2 + 127(ゲタ) = 1000 0001、仮数部: 整数 1 捨てて 01110000…0 (23ビット)
  故に、 0 / 1000 0001 / 011 1000 0000 0000 0000 0000
 �� 80 = 2 6+2 4 = 1010000 = 1. 01× 2 6 
   符号部 : 1 (負数)、指数部: 6+127 = 1000 0101 、仮数部: 0100000…0 (23ビット)
  故に 1 / 1000 0101 / 010 0000 0000 0000 0000 0000 
 





Copyright(C) 2001-2024 Harry PotterAll Rights Reserved.