C007:必勝法

2006年6月3日

「たけしのコマネチ大学数学科」の第7回目。今回の問題は、ゲーム「三山くずし」の必勝法を考えなさいというもの。


 問題:「3個、5個、7個の石がある。交互に石を取っていき、最後の石を取ったほうが勝ち。石はいくつ取ってかまわないが、違う山(色)の石を同時に取ることはできない。このゲームの必勝法を考えなさい」


 例によって「エクセル」で表を作ってみる。A列は「=DEC2BIN(C2)」として、C列に入力された石の数を参照して、二進数に変換している。B列の石の山は「=REPT("●",C2)」で、石の数ぶんの「●」を表示している。


 ここまで作成すると、やはり、対戦してみたくなる。しかし「エクセル」でインタラクティブなものを作ろうとすると、どうしても「VBA」を使わざるをえない。「VBA」とは「Visual Basic for Applications」の略で、マイクロソフトの「Office」製品で処理を自動実行させるためのプログラム言語だ。今回の問題は「VBA」の入門として、ちょうどいいかもしれない。


 さっそく「表示」メニューの「ツールバー」から「コントロールツールボックス」をクリックし、ボタンをひとつ作成。このボタンが押されたときの処理を「VBA」で記述する。第6回の二進数の説明のとき「エクセル」では、論理演算子はビット演算ができないと書いたが、「VBA」を使えば、話は別だ。「Xor」(排他的論理和)も使うことができる。


 これで、石の数を減らし「決定」ボタンを押すと、「エクセル」の番になり、石を取る。何も考えていない「エクセル」に必勝法を教えるということは、同時に自分自身がこの問題の「必勝法」に対する理解を深め、より短い記述で整理することにつながる。その結果、先手必勝だが、途中で一度でもミスをすると負けてしまうことになる(^^;。必勝法は、番組を見た方なら、すでにご存知のはず。


おまけ: 必勝法:Flashバージョン | 2012年10月19日


 上の「エクセル」の「VBA」では、確かにセルC2~C4に石の数を入力し、「決定」ボタンを押すと、「エクセル」が石を取る。しかし、上り判定や、勝敗の判定はない。番組開始当初は、「エクセル」を使って問題を解くことを主眼としていたけれど、「エクセル」には、不向きで苦しい問題もある。やっぱり、あれこれ、遊ぶことができるものを作るには、Flashが便利。というわけで、途中から路線変更して、Flashを使うようになった^^;



 【遊び方】このゲームは先手必勝なので、「あなた」が先手。石をクリックして取ったら「OK」ボタンを押す。石は何個取ってもよいが、他の山(違う色の石)を同時に取ることはできない。で、最後に石を取ったほうが勝ちというルールを再確認しておこう。コンピュータの番のとき、どの石を取るべきかを決めるアルゴリズムは、記事中で紹介した「エクセル」の「VBA」と同じ。書式ルールをFlashのActionScriptに合わせて書き換え、勝ち敗けの判定などを付け加えた。あなたは「必勝法」を見つけることができたかな?


コメント: yuki | 2006年5月14日 (日) 12時32分


日曜の朝、小学3年の息子に階段問題を挑戦させる。
フィナボッチの数列は教えずに、始めに1段、2段上がった時の場合分けを教え、1段から15段まで計算させた。解けたところから、理系の夫婦が数列の面白さ、3段上れたらとか、何段でも上れたらという条件で息子に教える。息子は、ポカ~ンとしながらもうなずく。
子供にとってテレビからの刺激は絶大で、やってみようという気になるらしい。そういう意味では良い番組だ。
いきなり難しい問題よりも、ちょっと感性をくすぐるもので小学生がチャレンジしやすいものを問題としてくれると嬉しい。


コメント: Gascon | 2006年5月15日 (月) 23時41分


Yukiさん、コメントありがとうございます。

 小学生に「フィボナッチ数列」の問題を解かせるとはスゴイ。今は「フィボナッチ数列」という言葉を知らなくても、中学生や高校生になって「フィボナッチ数列」という言葉に接したとき、お母さんとお父さんに教えてもらった階段の問題を解いたことを思い出し、「フォボナッチ数列」と結びついたなら、それは、すごく強い印象となって残ると思いますよ。

 私にとって「フィボナッチ数列」は「ひまわり」です。「ひまわり」の種の並び方って、うずを巻くように中心に向かっていて不思議な模様を描いていますよね。その並び方が「フォボナッチ数列」になっていることを、ずっとあとになって知り、強い印象を覚えた記憶があります。たしか「黄金比」について書かれていた本だったと思うのですが……。本の記憶は薄れても、体験と結びついた記憶は、この歳になっても覚えています。

 私の知人で「『フィボナッチ数列』という言葉は『ダ・ヴィンチ・コード』の中で出てくるので知りました」という人がいましたが、彼にとって「フィボナッチ数列」で思い出すのは「ダ・ヴィンチ」かも知れませんね。

 そして「たけしのコマネチ大学数学科」の番組で初めて「フィボナッチ数列」という言葉を知った人が、数年経って、「フィボナッチ数列」と言えば? と聞かれたとき、思わず「コマネチ!」と言うかも知れません(そんなバカな……)。


《 広 告 》