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