トップ «前の日記(2020-04-19(Sun)) 最新 次の日記(2020-04-21(Tue))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2020-04-20(Mon) 小雨から土砂降りから曇りのち晴れ

もっと金送れ

自分に実装できそうで少し重いものを考えているうちに 昔聞いた覆面算を思い出した。

思ったより面倒なようだったけど、ともかく できたっぽい
最初の実装はなかなか終わらない。ループ回数だけでも 10000000000回(1000*1000*10000)になる計算。 実はまだ、検証さえできていない。
少し考え直して、当初思いついた8段のループで書き直した。こちらなら 81000000回(9*10*10*10*9*10*10*10, s と m は最上位なので0を省ける) のはず。
足し算と掛け算を間違っていて、複数の解が出ていても気づかなかった。

$ time python3 s2.py
9 5 6 7 + 1 0 8 5 = 1 0 6 5 2
 
real    0m34.551s
user    0m34.550s
sys     0m0.000s

実は 筆算形式に成形してようやく間違いに気づいた。

$ time python3 s2.1.py 
  9 5 6 7
+ 1 0 8 5
---------
1 0 6 5 2
 
real    0m34.127s
user    0m34.127s
sys     0m0.000s

各桁の数が全部違うことを確認するため、set型に放り込んで重複を チェックする。もう少し速い方法があるような気もするが、よく 分からない。

>>> 3 != 4 != 3
True
 
>>> len({3, 4, 3})
2

解がひとつと分かっていれば、その後の処理は打ち切っても いいような気がする。


リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。