知恵袋のアルファベットを並べる確率の問題をPythonで解いてみました。(^_^;
10個の文字HIGHSCHOOLを一列に並べる。IGHHHがこの順に並ぶ確率を求めよ。
一度、文字列にして、{'I'の位置}<{'G'の位置}<{1番左側の'H'の位置}になっているかを調べてカウントしました。また、確率では同じものも区別する必要があるので、set()は使いませんでした。(^_^;
● HIGHSCHOOL.py
# coding: UTF-8 # HIGHSCHOOL.py import itertools from fractions import Fraction P = 'HIGHSCHOOL' t = c = 0 for p in itertools.permutations(P): t+=1 s = ''.join(p) if s.index('I')< s.index('G')< s.index('H'): c+=1 print("%d / %d = %s"%(c,t,Fraction(c,t)))
●実行結果
181440 / 3628800 = 1/20
- 作者: 辻真吾
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/24
- メディア: 大型本
- 購入: 19人 クリック: 199回
- この商品を含むブログ (59件) を見る