プログラマ脳を鍛える数学パズル 06
改変型コラッツ予想。
最初に 3 倍 + 1 して、コラッツ予想の処理にかけ、元の数字に戻る偶数は、10,000 までにいくつあるでしょうか?
てのがお題目。
プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問
- 作者: 増井敏克
- 出版社/メーカー: 翔泳社
- 発売日: 2015/10/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (11件) を見る
この問題何を見たいんだろう…二重ループと if 文で完結するし、コラッツ予想の説明もしてるので、問題文の通り書くだけ。特にアルゴリズムも何もない気が…
counter = 0 for start in range(2, 1000, 2): n = start * 3 + 1 while True: n = n / 2 if n % 2 == 0 else n * 3 + 1 if n == start: counter += 1 elif n == 1: break print(counter)
まぁさっくり2分位で。
Python の if は後置表現と呼ばれる類のものなので、三項演算子ともまた少し違う。
Java もそういえば OSS のサンプルコードとか、Thymeleaf みたいなテンプレートエンジンの公式ドキュメントでも平然と三項演算子使ってくるよね。JavaScript でも VueJS 公式ドキュメントとかでも…
三項演算子を蛇蝎の如く嫌ってるのは、要するに読みづらい三項演算をする奴がいるからだろうか…
個人的に、if 文はあんまり気に入らなくて、if 関数が欲しいのだけど(差は、if が値をreturnするかどうか)。
暇になってきたから、言語を変えながらやってみるか?
でも Python の練習にならんしううむ…