なでしことは?
なでしこは日本語でプログラムが出来る言語です。素晴らしい!
わたしは、とにかく「何か」を作るのが大好き。
料理をしたり、手芸をしたり、庭で野菜を育てたり……
それと同一線上にプログラムはあります。
もっとも、手芸関係は、不器用すぎてほぼほぼ挫折しますorz
そしてプログラムも、頭悪すぎて、挫折していました。
そもそも、「お前江戸時代から来たんか!」というツッコミを受けるほど、コンピューターのことなどよく分からず、いまだスマホも全く使いこなせてなくて、おまけにアルファベットや数字がずらーっと並んでんの見るとたちまち具合わるくなってくるという人間なんですからとてもムリ>< と思っていたのですが、なでしこと出会ったら、なんと! プログラム出来るようになりました!!(≧▽≦)
そんな感じだから別にたいしたものが作れるわけじゃないし、プログラマーな人から見たら変なことや無駄なことばかりしているんだろうけれど、ま、料理だってシェフみたいなの作れやしないし、野菜だって農家さんみたいに立派には作れないですからね~。
日本語プログラミングについて、なんやかやと言う人がいるのも目にするけど、とにかく、なでしこのおかげでプログラムが出来るようになって、毎日が楽しいよ! って人間がいるってことが何より大事☆
なでしこは、なんと来年度の中学校の教科書にも採用されたそうですよ。しゅごい!!
今やプログラムは、興味ある人も無い人もみんなが学校で勉強しなきゃならないことになったわけだけど、たとえ将来プログラマーになるつもりなんて0%でも、ちょっと出来たら人生が豊かになったり生活が便利になったりするものだよって伝えたい。
今年15周年という歴史あるなでしこですから、きっとそうしたお役にも立ってゆくものと思います。
というわけで、興味を持った方は是非こちらのなでしこ公式サイトをご覧下さい。
なでしこが、もっともっと流行るといいなあ☆
鶴亀算の問題
さて、本題。
ご存じでしょうが、鶴亀算とはこういう問題です。
鶴と亀が、あわせて100頭います。
足の数は、あわせて272本でした。
鶴は何羽で、亀は何匹いるでしょうか?
(鶴の足は2本、亀の足は4本です)
解き方?
世の中の賢い人の解説によると、鶴亀算は連立方程式を立てれば、簡単に解けてしまう問題なのだそうですが……そんなもんカケラも覚えていません。ていうか、覚えたことがあったのかどうかすら不明(えっ;)
しかし、鶴と亀だけの単純な鶴亀算については、江戸時代から伝わる素晴らしい呪文があるのですよ。
この歌を唱えれば、答えが出ます!
『鶴問はば、頭の数に四掛けて、足数引いて、二で割るべし』
若干昔の言葉になっていますが、現代人にも普通に通じますよね。要するに、**「鶴は、頭数に4を掛けて、足数を引いて、2で割れば求められるよ!」**という教えです。
なでしこで解く
では、この通りに、なでしこでプログラムをしてみます。
こんな感じ!
頭数は100。足数は272。
鶴は、頭数に4を掛けて、足数を引いて、2で割る。
亀は、頭数から鶴を引く。
「鶴は{鶴}羽、亀は{亀}匹」と表示。
どーですか、どーですか。
なでしこなら、ほぼほぼ歌の通りに書くことが出来るんですよ!
なんと分かりやすい。なでしこすごい!!
なでしこではこのように四則演算を、足す、引く、掛ける、割るで記述出来るんです。
こうして日本語で書いてそれが動くというのは、単に「(100×4-272)÷2」なんて書くだけよりも、ずっと分かりやすくて面白みがありますよね^^(もちろん、上記のような計算式も、普通になでしこで計算出来ます)
せつめい
ちなみにこれはどういうことかと言えば、まず、頭数に四を掛けるというのは、「頭数に亀の足数を掛ける」ということで、全部が亀の足だったら? と仮定しているんですね。400となります。
それから実際の足数を引けば、鶴の足の総数が分かります。128となります。
それを、鶴の足数2で割れば、鶴の数が分かるって寸法です。64羽。
そして、頭数からそれを引けば亀の数が分かりますね。36匹。
頭数は100。足数は272。
亀足数は4。鶴足数は2。
頭数に亀足数を掛ける。それを表示。
それから足数を引く。それを表示。
それを鶴足数で割る。それを表示。
頭数からそれを引く。それを表示。
おっと……
なでしこv1なら上記のとうりで動くのですが、v3ではダメでしたね。
v3では一旦表示をしたら、「それ」の内容を忘れてしまうみたい(?)
※ v3.1.19から、v3も上記の通りで動くようになりました!
ま、「それ」は便利なシステムなのですが、そもそも無闇に使いすぎると日本語を難解にしますからね。あれ? このそれってなんだったっけ? とかなって、バグの原因にもなりますからね。ちゃんと変数に代入して明示させていきましょう。
頭数は100。足数は272。
亀足数は4。鶴足数は2。
頭数に亀足数を掛けて、全部亀だった場合に代入。それを表示。
全部亀だった場合から足数を引いて、鶴足総数に代入。それを表示。
鶴足総数を鶴足数で割って、鶴に代入。それを表示。
頭数から鶴を引いて、亀に代入。それを表示。
これなら、v3の簡易エディタでお試し出来ます。
色々問題を変えて試してみてください☆
ちなみに、足数は、頭数の二倍以上四倍以下の偶数でないと、おかしな事になっちゃいますよ。
問題が毎回変わる鶴亀算を作ってみました。
自分で問題を変えることも出来るので、試してね☆
おわります
内容的には一番簡単な四則演算をするだけのプログラムでした。
そもそも大したことは書けないのですが、アドベントカレンダーの最初の記事ということで、なでしこの紹介を兼ねたような超簡単なのにしました。
と言いつつ記事中では文法などについての説明は省きました。公式ページのこちらをご覧下さい。
参考文献
『夢中になる! 江戸の数学』 桜井進 集英社文庫 9784087468762
『算法点竄指南録』 坂部広胖 1815 (三十二問目)