Pythonで解く数学パズルスマートフォン用の表示で見るPythonで解く数学パズル「プログラマ脳を鍛える数学パズル」をPythonで解きます。数学の未解決問題のひとつに「コラッツの予想」があります。・nが偶数の場合、nを2で割る・nが奇数の場合、nに3をかけて1を足すという操作を繰り返すとき、初期値がどんな数であっても必ず1に到達する(1→4→2→1を繰り返す)というものです。この問題を少し変えて、初期値が偶数の場合、初回のみnに3をかけて1を足すことから始めることとし、「最初の数」に戻るものを考えます。2で始めた場合、2→7→22→11→34→17→52→26→13→40→20→10→5→16→8→4→2となります。6で始めると、6→19→58→29→88→44→22→11→34→17→52→26→13→40→20→10→5→16→8→4→2→1→4→...となり、6には戻ってくることはありません。10,000以下の偶数のうち、上記の2や4のような「最初の数に戻る数」がいくつあるか、その個数を求めてください。MAGAZINEわたしの考え方コラッツのルールを関数Collatz(x)として定義する。Collatz(x)をループして繰り返し、元の数字に戻ればカウンタを1増やす。1に等しくなった場合はループをbreakする。cnt模範解答のミソ関数を定義して使う点は一緒だが、模範解答では最初の数に戻る場合にTrueを、1になった場合にFalseを返す関数を使っている。z)とすると、3番目の引数zがstepになる。breakはループを抜けるが、continueはループを繰り返す。breakとすべきところをずっとcontinueで書いていて、無限ループに陥ってしまっていた。修正版のほうがコードはすっきりしたように思うが、実行速度が速くなったかどうかは分からない。男性20人、女性10人がランダムに到着して行列を作る。最近は電車もバスも電子マネーが当たり前。はてなブログPro「プログラマ脳を鍛える数学パズル」をPythonで解きます。読者になる参考書籍Feedly読者登録はこちら検索リンクメインブログ最新記事フィボナッチ数列:「プログラマ脳を鍛える数学パズル」Q11の答えルーレットの最大値:「プログラマ脳を鍛える数学パズル」Q10の答えつりあわない男女:「プログラマ脳を鍛える数学パズル」Q09の答え日付の2進数変換:「プログラマ脳を鍛える数学パズル」Q07の答え(改造版)コラッツの予想:「プログラマ脳を鍛える数学パズル」Q06の答え月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。