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。うへぇ!