父の日イベントの人間双六にプログラミングを活かす
さっきスクワットをしたばかりの私は腕立てを始めた。
1、2、3、4、5、.....19、20 ふうっ。
◆幼稚園の父の日のイベント
先日、次女(4番目の子)の幼稚園で父に日向けのイベントがあった。次女のクラスでは人間双六をやった。子供たちが色画用紙1枚づつに双六の各マスのイベントを書く。
- 3つ戻る
- 5つ進む
- スタートに戻る
- 動物のマネをする
- 子供を負ぶってスクワット10回
- 腕立て20回
- お父さんの方を20回もむ
- 仮面ライダーのマネをする
などなど。
それを床に並べてスタートからゴールまでのコースを作った。親子5組づつ何回かのグループに分かれて巨大なサイコロを振って双六を始めた。私と次女の組は、スクワット、腕立てと筋トレメニューが続いたので運動不足の私は苦戦。(+_+)
◆ゲームの進捗管理
最初はゴールの直前のマスが「スタートに戻る」で、しかもその5つ前のマスが「5つ進む」だった。つまりゴール直前で、どちらのマスに止まってもスタートに戻ってしまう。そんなこともあり、ゲームの進行は遅れ気味。
そこでベテランのR先生は、ゴール直前の「スタートに戻る」を前の方に移動した。ナイス判断!
◆ゲームの高速化
さて、ここで私は考えた。どうやったらゲームの進行が最も早くなるのか? 使うマスは同じで順番を入れ替えるだけで。(道の分岐は禁止)
- 後半の「スタートに戻る」はやはりなるべく早めにする
- 「5つ進む」は「スタートに戻る」の1つ~4つ前に置く
- 「3つ戻る」は「スタートに戻る」を越えて戻ることのない位置に置く
- 時間のかかるマスは、5つ進むや3つ戻るでスキップされる位置に置く
などを思いついた。
あれっ、これって何かに似ている。そうだ、プログラムの最適化だ!
処理の順番を入れ替えることでプログラムの実行時の速度を速くできる場合がある。初心者がプログラムのレビューで指摘されがちなことだ。これとなんか似ている。(ちょっとこじつけ?!)
プログラムの最適化の考え方がすごろくの進行に利用できたんだ。
◆究極の高速化
終盤になって、ゲームの進行がますます遅れてくると、R先生は究極の手を使った。サイコロの1を塗りつぶし「ゴール」と書いた。この目を出したら無条件でゴールに飛ぶ。
先生いくらなんでもそれはやりすぎだろっ!
if(0) で高速化するなんて……。
こんなことを考えてしまった父の日。
abekkanでした。
-------------------
abekkanによると、以下の記事が関係があるようです