知恵袋のアルファベットを並べる確率の問題をPythonで解いてみた。

 知恵袋のアルファベットを並べる確率の問題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

Pythonスタートブック

Pythonスタートブック