前回Pythonで作ったプログラムが、不名誉な結果に終わってしまったので、ちょっと改良してみました。(^_^;
グローバル変数より、ローカル変数の方が速いとのことで、PyScripterの雛形を使ってみました。
さらに、関数に飛ばすより、直接計算させた方が速いだろうということで、Hn関数をやめてみました。まぁ、Rubyと同じぐらいになったようです。(^_^;
ちなみに、Rubyでも、Hn関数をやめたら、ちょっと速くなります。
それから、Pythonのバージョンは、2.7を使ってます。下記の1つめの参考URLによると、3系では、printに括弧()をつけないといけないようです。(^_^;
●SendMoreMoney2.py
# coding: UTF-8 # SendMoreMoney2.py import itertools from time import time def main(): pass # 未定義対策で何もしない tm=time() # Timer Start p=range(10) for q in itertools.permutations(p,8): s,e,n,d,m,o,r,y=q if s*m==0: continue # (s==0||m==0)ならスキップ send = 1000*s+100*e+10*n+d more = 1000*m+100*o+10*r+e money = 10000*m+1000*o+100*n+10*e+y if send+more!=money: continue # チェックを潜り抜けたものだけを表示 print(" "+str(send)) print(" +"+str(more)) print("-------") print(" "+str(money)) print("") tm=time()-tm # Timer Stop print("Runtime : %.3f [sec]"%tm) # import時以外main()関数を実行 if __name__ == '__main__': main()
●実行結果
9567 +1085 ------- 10652 Runtime : 2.216 [sec]
※参考URL
●PY習 やっぱり最初は"Hello World"
●Pythonの if __name__ == "__main__": ってなんだ?
●SEND MORE MONEY C言語プログラム - rscの日記
●SEND MORE MONEY(2) C++ - rscの日記
●SEND MORE MONEY(3) C言語プログラム - rscの日記
●SEND MORE MONEY JavaScriptプログラム - rscの日記
●SEND MORE MONEY in Java - rscの日記
●SEND MORE MONEY in Python - rscの日記
●SEND MORE MONEY in Ruby - rscの日記
●SEND MORE MONEY in Ruby(2) - rscの日記
●SEND MORE MONEY in Python(3) - rscの日記
- 作者: 柴田淳
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2012/08/25
- メディア: 単行本
- 購入: 1人 クリック: 13回
- この商品を含むブログ (41件) を見る
- 作者: 辻真吾
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/24
- メディア: 大型本
- 購入: 19人 クリック: 199回
- この商品を含むブログ (59件) を見る