問: 組み体操で10段のピラミッドを作ったとき、最も重量がかかるのはどの場所で、それはおよそ何kgか

Twitter で流れてきたので、Scheme でやってみた。

(define main
  (lambda (args)
    (print (reaction-of-kumitaiso (string->number (cadr args))))))

(define self-weight
  (lambda (n)
    (if (= n 1)
        (list 0.5 0.5)
        (cons 0.5 (append (make-list (- n 1) 1.0) '(0.5))))))

(define reaction-of-kumitaiso
  (lambda (n)
    (if (= n 1)
        (self-weight 1)
        (let ((u (map (lambda (x) (/ x 2.0)) (reaction-of-kumitaiso (- n 1)))))
          (map + (cons 0.0 u) (append u '(0.0)) (self-weight n))))))

1人分の体重を1.0として10段だと、一番下の支点にかかる重量は、

takatoh@nightschool $ gosh kumitaiso.scm 10
(0.9990234375 2.986328125 4.9091796875 6.6171875 7.841796875 8.29296875 7.841796875 6.6171875 4.9091796875 2.986328125 0.9990234375)

最大になるのは真ん中の支点で、8.29296875。1人の体重が60kgだと仮定すれば、

gosh> (* 8.29296875 60.0)
497.578125

となって、およそ500kg。うへぇ!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください