同じものを含む順列の問題をPythonで解いてみた。(2)

 前回のプログラムですが、検索していたらいいのが見つかりました。(^_^;
同じ物を含む順列 - メモ
 上記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で解いてみた。