(require (lib "trace.ss"))
(define (cputime f . args)
(define-values (result cpu real gc) (time-apply f args))
(* 1.0 cpu))
(define (factor o n f . args)
(define-values (result cpu real gc) (time-apply f args))
(* 1.0 (/ cpu (o n))))
;Aufgabe 1
(define (alignments m n)
(if (or (= m 0) (= n 0)) 1
(+ (alignments (- m 1) n) (alignments (- m 1) (- n 1)) (alignments m (- n 1)))
)
)
;(alignments 5 9)
(define (fak n)
(if (<= n 1)
1
(* n (fak (- n 1)))))
(define (alignments-i m n)
(define (alignments-for-length l)
(define (sum-fak a b)
(cond ((> a b) 0)
(else (+ (/ (fak a) (* (fak (- a m)) (fak (- a n)) (fak (- b a)))) (sum-fak (+ a 1) (+ m n))))
)
)
(sum-fak l (+ m n))
)
(alignments-for-length (max m n))
)
;(alignments-i 50 90)
; ;Aufgabe 2
(define (f n)
(if (< n 3) 1
(+ (* 3 (f (- n 1))) (* -2 (f (- n 2))) (* 3 (f (- n 3))))
)
)
; Laufzeitabschätzung
(define basis 1.84)
(define (f-o n) (expt basis n))
; Bestimmung des Proportionalitätsfaktors
(factor f-o 20 f 20)
(factor f-o 21 f 21)
(factor f-o 22 f 22)
(factor f-o 23 f 23)
(factor f-o 24 f 24)
(factor f-o 25 f 25)
(factor f-o 26 f 26)
(factor f-o 27 f 27)
(factor f-o 28 f 28)
(factor f-o 29 f 29)
; Proportionalitätsfaktor ca. 0.00067
(/ (* 0.00067 (f-o 100)) 1000 60 60 24 365)