summaryrefslogtreecommitdiff
path: root/sem_4/progaapp/TP1/day.rkt
blob: c55d5f551fb78092fe34f879e26e433fdbca8557 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#lang racket
(define bissextile
  (lambda (x)
    ( if (= (modulo x 4) 0)
         (if (not (= ( modulo x 100) 0))
             #t
             (if (= ( modulo x 400) 0)
                 #t
                 #f)
            )
         #f)
    )
  )

(define nb-annee-bissextile
  (lambda (x)
    (letrec ( (f
               (lambda (x i)
                 (if (not (= x 1900))
                     (if (bissextile x)
                         (f (- x 1) (+ i 1))
                         (f (- x 1) i)
                         )
                     i)
                 )
               ))
             ( f x 0)
      )
    )
  )

(define nb-jours-au-1-jan
  (lambda (x)
    (letrec ((f
              (lambda (x i)
                (if (not(= x 1))
                    (if (or (= 2 x) (= x 4) (= x 6) (= x 9) (= x 11))
                        (if (= x 2)
                            (f (- x 1) ( + i 28))
                            (f (- x 1) (+ i 30))
                            )
                        (f (- x 1) (+ i 31))
                        )
                    ( + i 31)
                    )
                )
              ))
              (if (= 1 x)
                  0
                  ( f (- x 1) 0)
                  )
      )
    )
  )

(define nb-jours (lambda (m d y)
                   (let ((i (if (= y 1900)
                                0
                                (+ (* (nb-annee-bissextile y) 1) (* 365 (- y 1900)))
                            )
                        ))
                        (let ((i (+ i (nb-jours-au-1-jan m))))
                              (let ((i (+ i d)))
                                (- i 1)
                                )
                          )
                     )
                   )
  )

(define jour-semaine (lambda (m d y)
                       (let ((nbjour (nb-jours m d y)))
                         (if (= (modulo nbjour 7) 0)
                             (display "Lundi")
                             (if (= (modulo nbjour 7) 1)
                                 (display "Mardi")
                                 (if (= (modulo nbjour 7) 2)
                                     (display "Mercredi")
                                     (if (= (modulo nbjour 7) 3)
                                         (display "Jeudi")
                                         (if (= (modulo nbjour 7) 4)
                                             (display "Vendredi")
                                             (if (= (modulo nbjour 7) 5)
                                                 (display "Samedi")
                                                 (if (= (modulo nbjour 7) 6)
                                                     (display "Dimanche")
                                                     (display "whut?")
                                                     )
                                                 
                                                 )
                                             )
                                         )
                                     )
                                 )
                             )
                         )
                       )
  )