2017/08/16 00:30

繰り返しになりますが。プロジェクトの本文や、活動報告についての感想、ご意見、ご質問を、ぜひコメントでお寄せいただければと思います。現在は支援募集期間中であり、本企画の実施期間ではないため、お寄せいただいた感想などについてはリターンとしてではなく、お返事や回答をさせていただきます。

また、私個人についてはこちらをご覧ください。

では本題です。

本文に紹介した『コンピュータ使わない情報教育 アンプラグドコンピュータサイエンス』には、数当てゲームが課題として挙げてあります。具体的には、実際の形は違いますが、海戦ゲームの見た目というか、それに似た形を取っています。

コンピュータ使わない情報教育 アンプラグドコンピュータサイエンス』では、数を当てるのに、当てにくい方法と当てやすい方法を紹介し、採用しています。たとえば、数がソートして並べていられれば、当てる側がそれを知っていれば平均して当てやすくなります。これは、当てる際に木構造によって数の並びを想定しやすいからです。また、特定の数ではなくいくつかの数の集まりを当てるという例もあり、これはハッシュを用いた例題になっており、これも平均して当てやすくなります。どのようにハッシュを求めているのかがわかれば、一回で当てられます。これらはどちらも当てやすい方法です。

対して、数がランダムに並べられていれば、平均して当てにくなります。

これをそのまま使うのは憚られますが、課題としてはシンプルなものであり、配列、木構造、ハッシュを一纏めに扱えるという利点はあります。

というのも、この課題の一部にはソートされた並びが使われていますし、ハッシュも用いられています。これは、自分自身の数の並び (たとえばトランプのAからK) を、自分自身でソートしたりハッシュを求めて並べたりし、それを相手に宣言するという方法もありますし−−『コンピュータ使わない情報教育 アンプラグドコンピュータサイエンス』ではその方法です−−、相手に自分自身の方法で並べさせ、その上で数を当てるという方法にも発展できるでしょう。

なお、ソートについて既に触れた記事としては「普通のバブルソートと普通ではないバブルソート」ではバブルソートが、「課題においてデータ構造やアルゴリズムを指定するか」では選択ソートが、「ガジェット・コンピューティング」ではスパゲッティ・アナログ・ガジェット (スパゲッティ・ソート)があります。

それはともかく、上のように言葉だけではわかりにくいかもしれないので、すこしばかり例を挙げましょう。

まず、ソートされている例です。とりあえず、トランプを使うとしての場合です。 “❺” が、児童Bが当たりと決めたカードとします。そして「小さい順にソートされている」とは宣言しますが、 “❺” を選んだことは隠されています。その上でこのようなやりとりがされるかもしれません:
児童Bのカード
0: ①②③④❺⑥⑦⑧⑨⑩⑪⑫⑬
児童A: 7
児童B: それより小さい
1: ①②③④❺⑥   ⑦⑧⑨⑩⑪⑫⑬
児童A: 4
児童B: それより大きい
2: ①②③④  ❺⑥   ⑦⑧⑨⑩⑪⑫⑬
児童A: 5
児童B: 当り!
3: ①②③④  ❺     ⑦⑧⑨⑩⑪⑫⑬

この当り外れの部分のみを取り出して、データ構造として書いてみましょう:
0: ①②③④❺⑥⑦⑧⑨⑩⑪⑫⑬
      ↙      ↘
1: ①②③④❺⑥  ⑦⑧⑨⑩⑪⑫⑬
     ↙  ↘       ↘
2: ①②③④  ❺⑥  ⑧⑨⑩⑪⑫⑬
     ↓   ↓ ↘     ↘
3: ①②③④  ❺     ⑧⑨⑩⑪⑫⑬

簡単な探索の例ですが、木構造になっていることがわかるかと思います。

児童・生徒のやりとりとして:
児童A: 7
児童B: それより小さい
児童A: 4
児童B: それより大きい
児童A: 5
児童B: 当り!

というやりとりだけを見ると、このような木構造での探索をしているということは意識しにくいかもしれません。ですので、ここで書いたような図を児童・生徒に一回のやりとりごとに書いてもらうという方法になると思います。

また、児童Aと児童Bが交互に数字を言うことで、ゲーム性もとりあえず維持できるかもしれません。さらには、どのような並べ方をしたかを宣言する必要はあるでしょうが、ソートした場合とランダムに並べた場合、あるいはハッシュにして並べた場合なども選択できることで、当てられにくい並べ方をするというような戦術的な(?)部分も組み入れられるかと思います。このあたりは、何回かゲームを繰り返すことで、発見的・体験的に学ぶ方向に持って行きたいと考えています。

ただ、ハッシュの場合の扱いに、難点があるとは言えるでしょう。『コンピュータ使わない情報教育 アンプラグドコンピュータサイエンス』でも同じですが、ハッシュだと他の場合とすこしルールが違っていたりします。例えばですが:
1と倍数でないもの: 1, 7, 11, 13
2と2の倍数: 2
3と3の倍数: 3, 6, 9
4と4の倍数: 4, 8, 12
5と5の倍数: 5, 10

このようにあったとします(「Xの倍数」は、Xが大きい方に入れています。その他、あくまで例なので、細かいところは無視してください)。『コンピュータ使わない情報教育 アンプラグドコンピュータサイエンス』の場合、ハッシュ値に対応する数については、どのようにハッシュを求めるかは決まっており、その戦艦(?)に対応する数字を宣言します。その上で、ハッシュ値を当てればいいという形になっています。この方法だと、一回で当たります。

この例の場合だと、「この方法を取っている」と宣言し、かつ「6」と宣言します。すると相手は「3と3の倍数」と宣言すればいいというわけです。

これを「海戦ゲーム」風の解釈をするなら(海戦ゲームにこのようなルールはあったか不明ですが)、ハッシュ値に対応した数の集りは、いわば密集した艦隊を形成していて、その艦隊を当てればいいという解釈だとも言えるかもしれません。ですが、正直、多少思うことがないわけでもありません。このあたりをうまく扱かえる方法があればいいのですが。

いずれにせよ、このような題材のままというわけではないとしても、題材や、それをどう落とし込むかを検討したいと考えています。興味を持たれましたら、ぜひご支援や、コメントを頂ければと思います。