前回のプログラムですが、検索していたらいいのが見つかりました。(^_^;
●同じ物を含む順列 - メモ
上記URLを参考にして作り直すと、次のようになります。(^_^;
やっぱり、自分で考えるより、検索した方が早いですね。楽な上にしかも速い。(^_^;
ちなみに、こちらの方が高速ですが、残念ながら辞書式順序にはなってないようです。どうもset()を使った時に乱れるようです。辞書式順序が必要な場合は前回のプログラムの方がいいようです。
● PermSame2.py
# coding: UTF-8 # PermSame2.py import itertools from time import time def main(): pass # code goes here tm=time() # Timer Start p = list('MATHEMATICS') r=4 count=0 for q in set(itertools.permutations(p,r)): ## print(q[:r]) count+=1 print(u"計: "+str(count)) tm=time()-tm # Timer Stop print("Runtime : %.3f [sec]"%tm) if __name__ == '__main__': main()
●実行結果
計: 2454 Runtime : 0.016 [sec]
ちなみに、pは、リストじゃなくて文字列でもいいようです。
p = list('MATHEMATICS') → p = 'MATHEMATICS'
※参考URL
●同じものを含む順列をJavaで解いてみた。(2)
●同じものを含む順列の問題をPythonで解いてみた。
●同じものを含む順列の問題を十進BASICで解いてみた。
●同じものを含む順列の問題をVisual Basicで解いてみた。