技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

プログラマ脳を鍛える数学パズル 06

改変型コラッツ予想。
最初に 3 倍 + 1 して、コラッツ予想の処理にかけ、元の数字に戻る偶数は、10,000 までにいくつあるでしょうか?
てのがお題目。

プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問

プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問

この問題何を見たいんだろう…二重ループと 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 の練習にならんしううむ…