Pythonで解く数学パズル

「プログラマ脳を鍛える数学パズル」をPythonで解きます。

フィボナッチ数列:「プログラマ脳を鍛える数学パズル」Q11の答え

問題 フィボナッチ数列のうち、各桁の数字を足した数で割り切れる数を以下の例に続けて 小さい方から5個求めてください。 例) 2 : 2 ÷ 2 3 : 3 ÷ 3 5 : 5 ÷ 5 8 : 8 ÷ 8 21 : 21 ÷ 3 ← (2 + 1 = 3で割る) 144 : 144 ÷ 9 ← (1 + 4 + 4 = 9で割る) 元ネタ: …

ルーレットの最大値:「プログラマ脳を鍛える数学パズル」Q10の答え

問題 この問題もCodeIQで見つからなかったので書籍版オリジナル問題と思われる。 ルーレットの目の配列にはヨーロピアンスタイルとアメリカンスタイルがある。連続するn個の目の和の最大値がヨーロピアンスタイル<アメリカンスタイルとなるような2以上36以…

つりあわない男女:「プログラマ脳を鍛える数学パズル」Q09の答え

問題 男性20人、女性10人がランダムに到着して行列を作る。ある位置で区切って行列を2つのグループに分ける時、どこで区切っても2つのグループのいずれかで男女の数が異なってしまうような到着順は何通りあるか。 この問題の元ネタをCode IQのサイトで探した…

日付の2進数変換:「プログラマ脳を鍛える数学パズル」Q07の答え

問題 年月日をYYYYMMDDの8桁の整数で表したとき、これを2進数に変換して逆から並べ さらに10進数に戻したとき、元の日付と同じ日付になるものを探してください。 期間は、前回の東京オリンピック(1964年10月10日)から、次回の東京オリンピック(2020年7月24日…

(改造版)コラッツの予想:「プログラマ脳を鍛える数学パズル」Q06の答え

問題 数学の未解決問題のひとつに「コラッツの予想」があります。 自然数nについて、 ・nが偶数の場合、nを2で割る ・nが奇数の場合、nに3をかけて1を足す という操作を繰り返すとき、初期値がどんな数であっても必ず1に到達する(1→4→2→1を繰り返す)というも…

いまだに現金払い?:「プログラマ脳を鍛える数学パズル」Q05の答え

問題 最近は電車もバスも電子マネーが当たり前。 でも、いまだに現金で払う人も意外と多いもの。 今回はバスに設置されている両替機を考えます。 この機械では、10円玉、50円玉、100円玉、500円玉の組み合わせに両替することができ、いずれの硬貨も十分な枚…

棒の切り分け:「プログラマ脳を鍛える数学パズル」Q04の答え

問題 長さn[cm]の一本の棒を1[cm]単位に切り分けることを考えます。 一本の棒を一度に切ることができるのは一人だけです。(切り分けられた棒が三本あれば、同時に三人で切ることができます。) 最大m人の人がいるとき、最短何回で切り分けることができるか…

カードを裏返して!:「プログラマ脳を鍛える数学パズル」Q03の答え

問題 1~100までの番号が書かれた100枚のカードが順番に並べられています。 最初、すべてのカードは裏返しの状態で置かれています。 ある人が2番のカードから、1つおきにカードを裏返していきます。すると、2, 4, 6, … , 100番のカードが表を向いています。…

数列の四則演算:「プログラマ脳を鍛える数学パズル」Q02の答え

問題 数字を文字列として表し、各桁の間に四則演算の演算子を入れることを考えます。 (演算子は入れても入れなくても構いません。) 例) 1234 → 1 + 2 * 3 - 4 = 3 9876 → 9 * 87 + 6 = 789 でき上がった式を計算した結果、元の数の桁を逆から並べた数字…

10進数で回文:「プログラマ脳を鍛える数学パズル」Q01の答え

問題 10進数、2進数、8進数のいずれで表現しても回文数となる数のうち、 10進数の10以上で最小の値を求めてください。 ※回文数は逆から数字を読んでも同じ数になる数のことです。 元ネタ: 第4回「今週のアルゴリズム:10進数で回文」正解者発表|CodeIQ MAG…

はじめに

さて 当ブログ、Pythonで解く数学パズルは私iGCNのPython学習の記録をつけて行くために開設しました。 今年の初めに2016年の目標としてプログラミングを勉強することを思い立ち、数ある言語の中からPythonを選んで学習を開始しました。 igcn.hateblo.jp igcn…