Calendar - for "REAL" programmers: Difference between revisions
Content added Content deleted
(Add Python example) |
(Added XLISP) |
||
Line 2,335: | Line 2,335: | ||
28 29 30 31 25 26 27 28 29 30 31 29 30 27 28 29 30 31 24 25 26 27 28 29 30 29 30 31 |
28 29 30 31 25 26 27 28 29 30 31 29 30 27 28 29 30 31 24 25 26 27 28 29 30 29 30 31 |
||
</pre> |
</pre> |
||
=={{header|XLISP}}== |
|||
XLISP isn't case-sensitive, so in principle it would be possible just to reproduce the solution given in the "ordinary" Calendar task. But that program makes use of recursion, "fancy" data structures, long variable names, pretty-printy indentation, and a whole host of other features that I don't think REAL programmers like any better than they like lower case: so, instead, here is a version using only global variables and "<tt>DO</tt> loops like God meant them to be". |
|||
<lang lisp>(SETQ YR 1969) |
|||
(SETQ M #("JANUARY" "FEBRUARY" "MARCH" "APRIL" "MAY" "JUNE" "JULY" "AUGUST" "SEPTEMBER" "OCTOBER" "NOVEMBER" "DECEMBER")) |
|||
(SETQ ML #(31 28 31 30 31 30 31 31 30 31 30 31)) |
|||
(SETQ WD #("SU" "MO" "TU" "WE" "TH" "FR" "SA")) |
|||
(IF (AND (= (REM YR 4) 0) (OR (/= (REM YR 100) 0) (= (REM YR 400) 0))) (VECTOR-SET! ML 1 29)) |
|||
(SETQ D (REM (+ 1 (+ (* 5 (REM (- YR 1) 4)) (* 4 (REM (- YR 1) 100)) (* 6 (REM (- YR 1) 400)))) 7)) |
|||
(TERPRI) |
|||
(DO ((I 0 (+ I 1))) ((> I 60)) |
|||
(PRINC " ")) |
|||
(PRINC "SNOOPY CALENDAR ") |
|||
(PRINC YR) |
|||
(TERPRI) |
|||
(DO ((I 0 (+ I 1))) ((> I 11)) |
|||
(TERPRI) |
|||
(DO ((J 0 (+ J 1))) ((> J 65)) |
|||
(PRINC " ")) |
|||
(PRINC (VECTOR-REF M I)) |
|||
(TERPRI) |
|||
(PRINC " ") |
|||
(DO ((J 0 (+ J 1))) ((> J 6)) |
|||
(DO ((K 0 (+ K 1))) ((> K 16)) |
|||
(PRINC " ")) |
|||
(PRINC (VECTOR-REF WD J)) |
|||
(PRINC " ")) |
|||
(TERPRI) |
|||
(DO ((J 0 (+ J 1))) ((> J 6)) |
|||
(IF (< J D) (DO ((K 0 (+ K 1))) ((> K 20)) (PRINC " ")))) |
|||
(DO ((J 1 (+ J 1))) ((> J (VECTOR-REF ML I))) |
|||
(PRINC " ") |
|||
(IF (< J 10) (PRINC " ")) |
|||
(DO ((K 0 (+ K 1))) ((> K 16)) |
|||
(PRINC " ")) |
|||
(PRINC J) |
|||
(SETQ D (+ D 1)) |
|||
(IF (> D 6) (TERPRI)) |
|||
(IF (> D 6) (SETQ D 0))))</lang> |
|||
{{out}} |
|||
<pre> SNOOPY CALENDAR 1969 |
|||
JANUARY |
|||
SU MO TU WE TH FR SA |
|||
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 |
|||
FEBRUARY |
|||
SU MO TU WE TH FR SA |
|||
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 |
|||
MARCH |
|||
SU MO TU WE TH FR SA |
|||
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 |
|||
APRIL |
|||
SU MO TU WE TH FR SA |
|||
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 |
|||
MAY |
|||
SU MO TU WE TH FR SA |
|||
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 |
|||
JUNE |
|||
SU MO TU WE TH FR SA |
|||
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 |
|||
JULY |
|||
SU MO TU WE TH FR SA |
|||
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 |
|||
AUGUST |
|||
SU MO TU WE TH FR SA |
|||
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 |
|||
SEPTEMBER |
|||
SU MO TU WE TH FR SA |
|||
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 |
|||
OCTOBER |
|||
SU MO TU WE TH FR SA |
|||
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 |
|||
NOVEMBER |
|||
SU MO TU WE TH FR SA |
|||
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 |
|||
DECEMBER |
|||
SU MO TU WE TH FR SA |
|||
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</pre> |
|||
=={{header|X86 Assembly}}== |
=={{header|X86 Assembly}}== |