こんにちは。教育ヲタ母です。
会社員時代、プログラミング教室の立ち上げの際にお世話になったKさんから、久しぶりに連絡をいただきました。Kさんは、元理科実験教室の教室長で、現在はプログラマーという経歴の持ち主。で、しかも数学オタクという面白い人です。
そんなKさんがこんな動画を教えてくれました。
フィボナッチ数列です。
フィボナッチ数列については、「難しい」という印象しかありませんでした。最近、Viscuit(ビスケット)開発者のはらだ博士が、フィボナッチ数列を作ってたのは知っていましたが・・・難しそうだなーと思ってスルーしていたんです。
▼はらだ博士のブログ:2進法のフィボナッチ数列
https://devroom.viscuit.com/2019/03/26/post-1807/
しかし!こんなにもフィボナッチ情報が押し寄せてきているということは、神様のお告げかもしれません(笑)はかせと違う方法でフィボナッチ数列をViscuitで再現したいと思います。
1. フィボナッチ数列とは
フィボナッチ数列とは、次のような数列です。
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, …
この数列に規則があることがわかるでしょうか?前の2つの数字を足し合わせたものが、次の数として現れるという規則があります。
そして、自然界にはこの数列の数字がよく現れるというのが、先程ご紹介した動画の内容でした。
1-1. フィボナッチさんのうさぎ問題
この数列を考えたのは「フィボナッチさん」という中世イタリアの数学者です。ちなみにフィボナッチというのは「ボナッチの息子」という意味の愛称だそうで、本名は「レオナルド・ダ・ピサ」(ピサのレオナルド)だそう。あのピサの斜塔で有名なところの人なんですね!
さて、動画の中でも紹介がありましたが、フィボナッチさんはつぎのような問題を考えました。
・1つがいのウサギは、産まれて2か月後から毎月1つがいずつのウサギを産む。
・ウサギが死ぬことはない。
<問題>
この条件のもとで、ウサギのつがいの数は1ヶ月ごといくつになるか?
その答えが動画のこちらの部分です。(動画の途中から再生が始まります。)
つがいの数の合計はフィボナッチ数列になっているのです。
2. Viscuitでフィボナッチ数列
ではここからViscuitでフィボナッチ数列を作ってみたいと思います。冒頭でも書きましたが、めざすのははらだ博士と違う方法!
そこで、参考にしたのは、上記のフィボナッチの「ウサギの問題」です。
この作品は
・ひとりでつくるで作ります。(みんなでつくるでは動作しません。)
・方眼紙モードで作ります。
・画面から出た絵が、再度画面内に戻ってこない設定にしています。
設定画面はこちら。スピードは遅い方がわかりやすいかな?と思ったので遅くしていますが、遅くしなくてもかまいません。
2-1. 部品を用意しよう
今回用意する部品(絵)は3つです。
一つ目は子ウサギの絵です。ウサギの問題は「つがい」でしたが、2匹描くのが面倒だったので1匹で表現しています。
二つ目は成長した親ウサギの絵です。こちらも1匹で表現します。
最後は、数を数えるための絵です。シンプルなマルの絵にしました。
2-2. メガネをつくろう
動画の通りに作ったら、メガネは結構シンプルになりました。
ポイントは「次の段(次の世代)に移ったら、前の段は数えるためにマルの絵に変えておく」ということです。
マルの絵に変えないでおくと、増殖が止まらないので増殖を止めるという意味もあります。
また、今回は単純にうさぎの絵をマルに置き換えたので二進数表記ではなく、マルの数そのままを数えるようにしてあります。
最後に、タッチしたら最初の子ウサギが現れるようにしました。
タッチ画面でプログラムを実行すると、最終的にこのようになります。
21以降は見切れてしまいました。
動画はこちら。
3. はらだ博士と違う方法でフィボナッチ数列を作ろう まとめ
出来上がったメガネは簡単だったんですが、最初ぜんぜんうまくいかなくて四苦八苦しました。
はらだ博士の方が美しいと思いますが、自分なりの作品が作れたのでよかったです!
フィボナッチ数列の動画を紹介してくれた、Kさん、ありがとうございました!
今回の作品のリンクはこちらです。
https://develop.viscuit.com/env/view.html?control=play%3A00300013%3A7950%2F1-1%2F031.json%3A
※PCのみ