あなたはこの”プログラミングマジック”の仕掛け、わかりますか?

化学や物理現象を利用した「サイエンスマジック」というものがあります。

米村でんじろうさんのサイエンスショーが有名ですよね。

サムネイル

化学や物理を学び、その原理がわかっている人からすれば、

「そりゃそうなるでしょ」ということも、その分野を学習していないもしくは

知らない人からすれば、「なんでそうなるの!?」とあたかもマジック

にみえてしまうものです。

 

この「サイエンスマジック」と同じように、「情報科学」「計算機科学」の原理を

利用して行う「プログラミングマジック」(私の造語です, CSマジックといった方が良いかもですが)というものもあります。

1つ例を示しましょう。

1)まず相手に白カード黒カードを自由に5×5に並べてもらいます。

2)そのあと、「より難しくするために一列追加しますね」といいながら
  マジシャン役のあなたが縦と横1列カードを追加します。

サムネイル

3)そしてあなたは後ろを向き、あなたがみていない状況をつくり、相手に任意の1枚を

ひっくり返してもらいます。

4)そして、当てる

———————————————————–

 

とこれだけです。

「5×5の配置を覚えてるでしょ」と疑う方がいそうなら、7×7 9×9のように数を

増やして行っても良いでしょう。

鍵になるのは、(察しがついているかもしれませんが)、言い換えますと、

コンピュータサイエンス要素をいれているのは、ずばり2)の個所です。

 

さてさて、どのように縦横1列を加えるとよいでしょうか???

 

正解は、縦横の黒カード、白カードどちらでも良いですが、縦横のカード枚数合計が偶数枚になるようにおくことです。

相手がひっくり返す前は、縦横の白カード、黒カードはすべて偶数枚になっていますから、

サムネイル

カードをひっくり返した縦横は白カード、黒カードの合計が必ず奇数になるはずです。

その縦横が交わったところのカードが相手がひっくり返したカード、というわけです。

 

これは、IT用語で「バイナリチェック」と呼ばれるものを応用したマジックです。

 

デジタルデータはすべて「0」と「1」の2つの数値の羅列になっています。

この2進法の原理を用いて、ある人からある人へ送られたデータが

何らかの影響で変化したか・しなかったかが判明するように

「0」もしくは「1」の総数が奇数もしくは偶数となるようデータの末尾等に「0」「1」を加えることで

送信先と送信元でデータが違っていないかチェックするのです。

さきほどのマジックは白カードを「0」黒カードを「1」に見立てている、ということです。

 

サムネイル

他にも、こうしたコンピュータサイエンス使ったマジックはいくつもあります。

こどもはマジックが大好きですので、実はコンピュータサイエンスの知識が

隠されているとなれば、学習への”つかみ”として良いかもしれませんよ!

各スクールレッスンで大好評!プログラミング脳を養う「西嶋式プログラミングパズル」

ステムアカデミーキッズ開発者の西嶋孝文氏によって考案されました。このパズルの対象者は小学校低学年~ご年配の方まで、幅広い方々が楽しめます。パズルを通してプログラミング思考を養い、プログラミングの考え方や記号の使い方を学ぶことはもちろん、考える力、論理的思考力、推理力、問題解決力、集中力などあらゆるスキルを身につけることができます。

ぜひ沢山の人に楽しく学んで頂き、これからプログラミングを学んでいくための素地となるパズルになっていけば幸いです。ぜひチャレンジしてみてください。

>プログラミングパズルの解き方
>西嶋式プログラミングパズルとは
>西嶋式プログラミングパズル問題一覧

※プログラミング脳を育てる「西嶋式プログラミングパズル」(c2019 StemAcademyKids Nishijima Takafumi)は、色・サイズ等を加工してご家庭や個人でご使用いただくことができます。但し、再販売・再配布を禁止致します。また著作権はステムアカデミーキッズ開発者に帰属します。商用利用をご希望の方は、ステムアカデミーキッズ事務局へお問い合わせくださいませ。