知恵袋で見つけた同じものを含む円順列の問題をPythonで解いてみました。(^_^;
赤玉2個、青玉2個、白玉4個を円形に並べる方法の総数を求めよ。
拙ブログのNecklacePerm01.javaを参考にして作りました。
場合の数・確率の問題は、検算が難しいため、答えに確信が持てないことが多いですね。(^_^;
● CircularPerm1.py
# coding: UTF-8 # CircularPerm1.py import itertools from time import time def main(): tm = time() # Timer Start P = '赤赤青青白白白白' s = '' # 発見したものの保存用 cnt = 0 for p in sorted(set(itertools.permutations(P))): # 同じものを含む順列 t = ''.join(p) if t not in s: cnt+=1 print(t) s+=t+t+'|' print(f'計: {cnt}') print(f'Runtime : {time()-tm:.3f} [sec]') # Timer Stop & Disp if __name__ == '__main__': main()
●実行結果
白白白白赤赤青青 白白白白赤青赤青 白白白白赤青青赤 …(省略)… 白白青青白赤白赤 白赤白赤白青白青 白赤白青白赤白青 計: 54 Runtime : 0.016 [sec]
※参考URL
●【神回】秒で解ける!同じものを含む円順列 - YouTube
●同じものを含む数珠順列の問題をJavaで解いてみた。 - rscのブログ
●同じものを含む円順列の問題をPythonで解いてみた。(2) - rscのブログ
●同じものを含む円順列の問題をPythonで解いてみた。(3) - rscのブログ