知恵袋のアルファベットを並べる順列の問題をPythonで解いてみました。(^_^;
SUUGAKUの7文字を1列に並べるとき、次の並べ方は何通りあるか。
(1)1列に並べる。
(2)GAUSUという文字列を含むように並べる。
(3)Uはすべて奇数番目にくるように並べる。
(4)Uは2つ以上隣合わないように並べる。
前回のは、この問題の(4)の部分ですが、これも含めて全部まとめて解いてみました。(^_^;
この問題で難しいのは(3)ですが、「Uはすべて奇数番目にくる」とは、「偶数番目に'U'を含まない」ということですよね。(^_^;
● SUUGAKU2.py
# coding: UTF-8 # SUUGAKU2.py import itertools def main(): # 0123456 P = 'SUUGAKU' cnt1 = cnt2 = cnt3 = cnt4 = 0 for p in set(itertools.permutations(P)): # 同じものを含む順列 cnt1+=1 s = ''.join(p) t = p[1]+p[3]+p[5] if 'GAUSU' in s: cnt2+=1 if not 'U' in t: cnt3+=1 # 偶数番目に'U'を含まない if not 'UU' in s: cnt4+=1 print("(1) %d"%cnt1) print("(2) %d"%cnt2) print("(3) %d"%cnt3) print("(4) %d"%cnt4) if __name__ == '__main__': main()
●実行結果
(1) 840 (2) 6 (3) 96 (4) 240