Pythonで解く数学パズルスマートフォン用の表示で見るPythonで解く数学パズル「プログラマ脳を鍛える数学パズル」をPythonで解きます。男性20人、女性10人がランダムに到着して行列を作る。ある位置で区切って行列を2つのグループに分ける時、どこで区切っても2つのグループのいずれかで男女の数が異なってしまうような到着順は何通りあるか。IQのサイトで探したけど見つからなかったので、書籍版のオリジナル問題なのだろうか。わたしの考え方まずは男性20名、女性10名の並び替えの組み合わせを全て吐きだす。最初の2名のところで区切るところから初めて、28名で区切るところまで全ての場合を検証して、男女の数が等しくならない組み合わせを数え上げて行く。模範解答のミソ模範解答では、男女の順列の問題を2次元の表を使って考えている。男性が来たら右へ、女性が来たら上へ移動する経路を考える。男女が同数になる場所をカウントしないように、経路が何通りあるかを算出する。馬鹿正直に答えを出そうとすると、検証しきれなくなる事が分かった。問題を抽象的に置き換えて考えることが重要で、これは数学的センスが問われている。修正解答では再帰定義を使うことでうまく解くことが出来た。最近は電車もバスも電子マネーが当たり前。はてなブログPro「プログラマ脳を鍛える数学パズル」をPythonで解きます。読者になる参考書籍Feedly読者登録はこちら検索リンクメインブログ最新記事フィボナッチ数列:「プログラマ脳を鍛える数学パズル」Q11の答えルーレットの最大値:「プログラマ脳を鍛える数学パズル」Q10の答えつりあわない男女:「プログラマ脳を鍛える数学パズル」Q09の答え日付の2進数変換:「プログラマ脳を鍛える数学パズル」Q07の答え(改造版)コラッツの予想:「プログラマ脳を鍛える数学パズル」Q06の答え月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。