Freiteg der 13. 2010-01-27 12:22:30 ; Gregorianischer Kalender -> Julianisches Datum (Tage seit dem 1. Januar -4712) (define (jd t m j) (+ (* 367 j) (- (truncate (/ (* 7 (+ j (truncate (/ (+ m 9) 12)))) 4))) (- (truncate(/ (* 3 (+ (truncate (/ (+ j (truncate (/ (- m 9) 7))) 100)) 1)) 4))) (truncate (/ (* 275 m) 9)) t 1721029)) ; Gibt den Wochentag eines Datums zurueck. (0=Montag, 1=Dienstag, ...) (define (datum-zu-wochentag tag monat jahr) (modulo (jd tag monat jahr) 7)) ; Berechnet am-gleichen-tag rekursiv (define (am-gleichen-tag-berechnung tag monat jahr wochentag) (if (= jahr 2100) '() (if (= (datum-zu-wochentag tag monat jahr) wochentag) (cons jahr (am-gleichen-tag-berechnung tag monat (+ jahr 1) wochentag)) (append (am-gleichen-tag-berechnung tag monat (+ jahr 1) wochentag)) ) ) ) ; Gibt eine Liste mit allen Jahren zurueck, bei denen der Tag und Monat auf den gleichen ; Wochentag fallen wie im angegebenen Datum. (define (am-gleichen-tag tag monat jahr) (am-gleichen-tag-berechnung tag monat jahr (datum-zu-wochentag tag monat jahr))) ; Testausgabe (am-gleichen-tag 13 4 2001)