パズルで学ぶプログラミング
という本が書けないかな
興味深い問題をサクっとプログラムで解いてるうちにプログラミング技術も学べるみたいな
ゲームやパズルだけでプログラミング技術は学べるものだろうか?
学ぶべきこと
入出力
Hello World
変数
数値演算
ローン計算
利息計算
条件分岐
3で割れたら、FizzBuzz
繰り返し
数え上げ、シミュレーション, 総当たり
再帰
数え上げ
バックトラック
8-Queen
順列組合せ
ポーカーの手をすべてリストする
関数の扱い
切符問題
計算量
みたいなのをパズルやシミュレーションで勉強する
背景
真面目に考えるよりプログラミングで問題を解く方が楽な場合がある 増井俊之.icon
飛行機座席問題の答など、証明するよりプログラムでシミュレーションした方が速いかもしれない
「年利10%を10年続けるとどうなる?」とか、真面目に指数計算するよりもプログラミングした方が速いかもしれない
つるかめ算ですら方程式について考えなくても解ける
プログラミングしないと解けない問題も多い
逆正弦法則や乱数網羅率など、シミュレーションでないと計算できない
前述のものでもちょっと面倒な条件が追加されたりすると計算では解けない
e.g. 「日利0.1%だけど3がつく日は0.2%になる」みたいなのは真面目に計算できない
飛行機座席問題2はシミュレーションでないと解けない
プログラミングしてはじめて納得する場合も多い
モンティ・ホール問題の場合など、考えたら間違えてしまう可能性すらある
算数や数学でいろんな法則を習うが、聞いても「フーン」という感じだろう
プログラムを書いて値を確認すると「ナルホド」となって面白い
プログラミングの練習にもなるし数学的感覚も身につく
$ \sum n = {n(n+1) \over 2}なんていろんな$ nで試してみたい
プログラムを書いて数え上げてはじめてわかることもある
つまり一般的にプログラミングは様々な問題を解いたり納得したりするのに有用である
問題解決のプログラミングといった方が適切かもしれない
プログラマはそんなこと当然知ってるが、そうでない人はわからないのではないか?
シミュレーションの民主化みたいな?
問題
算数好きな人にしかウケないかも?
そういう人はすでにプログラミングぐらいできる
以外なテクニック、グラフィクスがないと駄目かな?
どういう話がわかりやすいだろう?
レシピ的な説明
順番に何かをやる話
総当たり的な説明
全部試せば答がわかるのはあたりまえだと思うだろう
繰り返すとどうなるかの説明
リボ払いとか
利息計算
条件とか乱数とかもわかりやすい?
サイコロギャンブルみたいなやつ
関連資料 書籍