SEND MORE MONEY in Python(2)

 前回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の日記

みんなのPython 第3版

みんなのPython 第3版

Pythonスタートブック

Pythonスタートブック