Pythonで解く数学パズルスマートフォン用の表示で見るPythonで解く数学パズル「プログラマ脳を鍛える数学パズル」をPythonで解きます。最近は電車もバスも電子マネーが当たり前。現金で払う人も意外と多いもの。今回はバスに設置されている両替機を考えます。この機械では、10円玉、50円玉、100円玉、500円玉の組み合わせに両替することができ、いずれの硬貨も十分な枚数がセットされています。(バスの運賃は現金の場合は10円単位になっているため、1円玉、5円玉は取り扱っていません)両替する際に、使われない硬貨はあっても構いませんが、バスの中でたくさんの小銭が出ると困るため、最大で15枚になるように両替します。10円玉を100枚、という両替はできません。このとき、1000円札を入れたときに出てくる硬貨の組み合わせは何通りあるかを求めてください。硬貨の順番は区別しないものとします。総当たり式でループを作り、合計額が1000円かつ合計枚数が15枚以下の組み合わせを抽出する。500円玉は0枚から2枚、100円玉なら0枚から10枚までとループの数は調整できる。a模範解答のミソ模範解答もまずはわたしの答えと同じく単純なループで解いている。拡張性を意識した別解答では、Rubyのrepeated_combinationメソッドを用いて、組み合わせを吐き出している。a気づき・反省点Pythonで組み合わせを扱う場合はitertoolsをimportするとよい。itertools.combinations_with_replacement()で、重複を許す組み合わせを吐きだすことが出来る。コードがすっきりして見やすくなった。リスト内で足し算を行う。男性20人、女性10人がランダムに到着して行列を作る。はてなブログPro「プログラマ脳を鍛える数学パズル」をPythonで解きます。読者になる参考書籍Feedly読者登録はこちら検索リンクメインブログ最新記事フィボナッチ数列:「プログラマ脳を鍛える数学パズル」Q11の答えルーレットの最大値:「プログラマ脳を鍛える数学パズル」Q10の答えつりあわない男女:「プログラマ脳を鍛える数学パズル」Q09の答え日付の2進数変換:「プログラマ脳を鍛える数学パズル」Q07の答え(改造版)コラッツの予想:「プログラマ脳を鍛える数学パズル」Q06の答え月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。