平面型人間ピラミッドで受ける負荷をPythonで計算してみた。

 今話題の平面型人間ピラミッドで受ける負荷(荷重)をPythonで計算してみました。(^_^;
 設定は「B!はてなブックマーク」で見つけたこちらの記事です。(^_^;
たった5段のピラミッドで一番下の子が受ける負荷がすごすぎる - あれこれやそれこれ
 一番上の人を第1段、左から1番目として、10段目まで求めてみました。
 私の中高生の頃は5段ぐらいだったと思いますが、10段とかやらされている人もいたんですね。(^_^;
 それから、中央の人より端の人の方がお得だったんですね。同じ段ならどこもたいして変わらないと思っていました。(^_^;

● HumanPyramid1.py

# coding: UTF-8
# HumanPyramid1.py

def Round(x):
    return int(round(x))

# weight on each person in a human pyramid
def WeightInHP(i, j):   # 上からi段目、左からj番目。(1,1)からスタート
    AW = 50 # 平均体重
    if i==1: return 0.0
    elif j==1:
        return (WeightInHP(i-1,j)+AW)/2.0
    elif i==j:
        return (WeightInHP(i-1,j-1)+AW)/2.0
    else:
        return (WeightInHP(i-1,j-1)+AW)/2.0+(WeightInHP(i-1,j)+AW)/2.0

def main():
    N = 10
    for i in range(1,N+1):
        s = " "*2*(10-i)
        for j in range(1,i+1):
            s+="%3d "%Round(WeightInHP(i,j))
        print("%s"%s[:-1])

if __name__ == '__main__':
    main()

●実行結果

                     0
                  25  25
                38  75  38
              44 106 106  44
            47 125 156 125  47
          48 136 191 191 136  48
        49 142 213 241 213 142  49
      50 146 228 277 277 228 146  50
    50 148 237 302 327 302 237 148  50
  50 149 242 320 365 365 320 242 149  50

※参考URL
http://math.stackexchange.com/questions/486807/how-much-weight-is-on-each-person-in-a-human-pyramid