りつ缶

のんべんだらり

タクシー数の4乗数バージョン

解くことになった経緯

大晦日に父から届いた絵はがきに代数の問題が書かれていまして*1,「まー解けないと思うから無理に解かなくてもいいよ」とか追伸メールで送られてきたら,ムキになってしまうわけです。なりました。
なので,解きました。「アナログじゃ解けないよ!」とか言われたのですっごいうろ覚えで怪しいなと思いつつ Ruby で書きました。しかし途中で父が Python 使ってたのを思い出してしまったため,wiki とか見ながら Python 初体験と相成りました。

プログラム

下部の埋め込みリンク先にもありますが,問題は

a^2 + b^2 = c^2 + d^2 を満たす整数の組は,1〜100の範囲で多数ある。
a^3 + b^3 = c^3 + d^3 を満たす整数の組,これもまぁまぁある。
では, a^4 + b^4 = c^4 + d^4 を満たす整数の組は,1〜300の範囲でいくつあるか。

という内容のもの。解くときには全く気づかず,2乗の組を算出するプログラムの例とかないだろうかと思ってチラッとググった程度で,結果的に無駄にネストの深いプログラムが出来上がりました…orz
一応これで該当組み合わせが重複なしで算出されるようになりましたが,でも無駄に手間くって遅くて割と悲しい感じのプログラムと相成っております。元々は大きさの条件を加えていなかったので,これでもまだマシになってはいるのですが…うん…改良したい…ですね…orz



taxy-cab_square.py

おまけ

解き終わった後で父とメールをしていて,3乗のものはラマヌジャンのタクシー数のことだと教わったので調べていたら,それを算出するためのプログラムを見つけまして…。自分のよりはよっぽどスマートだなーと思って,こういう方向性で組めなかったことにかなり凹みました…。

ハーディ・ラマヌジャン数を求めるプログラム - 白覧境幾

ああ…なんか自分が書いたのよりよっぽどスマートだわこれ…書きたかったのはこういうのだよ…

2015/01/03 16:53

こちらを真似つつ,一度計算したら配列につっこむような方向で改良がんばってみるか…と思った次第であります…。その都度計算するの,効率悪いですし(と父に指摘されたことにより負けん気が出たのがでかい)。
ちなみに父は VBA で組んで,改良版を VisualBasic で組む予定(?)だとか。子どもが親よりはるかに燃費悪いことしてるじゃないかというのがよくわかりますね…。いや,別に何使って組むかどうかなんて,そこまで気にしなくてもいいのかもしれないけれども。
あと,仕事で使う必要性がないからこそ,定期的にプログラムを書く習慣つけないとだめぽよ…というのをとてもとても実感しました。悔しい。
というかこんなに父とメールしたの初めてな気がするな! しました!

*1:というかむしろ宛名と差出人以外の内容それしかなかった