年間カレンダー
Posted feedbacks - Common Lisp
Date-Calcという同名のPerlのライブラリをCommon Lispで再現したものを 使用してみました。 ライブラリ機能のおまけで英仏独等々に対応させてみましたが、 日本語は対応していないという…。 (y-calendar 2008 7) ;7はイタリア(数字で指定だと色んな意味で紛らわしいかも) ;==> ; Gennaio 2008 ;Lun Mar Mer Gio Ven Sab Dom ; 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 ; ~~~
see: Date-Calc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | (defpackage :doukaku-119 (:use :cl :date-calc))
(in-package :doukaku-119)
(defun y-calendar (y &optional (lang 1))
(do ((m 1 (1+ m)) (col 4))
((> m 12))
(format t "~&~%~V:@<~A ~D~>~%~{~A~^ ~}~%"
(* col 7) (get-month-name m lang) y
(get-week-day-name-list lang (1- col)))
(do ((d 1 (1+ d))) (nil)
(let ((dow (day-of-week y m d))
(day (day-of-year y m d)))
(when (= 1 d)
(format t "~V,0T" (* col (1- dow))))
(if (zerop day)
(return)
(format t "~VD~:[ ~;~%~]" (1- col) d (= 7 dow)))))))
(defun get-month-name (m &optional (lang 1))
(aref (gethash lang date-calc::month-to-text) m))
(defun get-week-day-name-list (&optional (lang 1) (shoten 3))
(map 'list (if shoten (lambda (name) (subseq name 0 shoten)) #'identity)
(subseq (gethash lang date-calc::day-of-week-to-text) 1)))
|


186
#4884()
Rating4/4=1.00
nを入力としてn年の年間カレンダーを返すプログラムを作ってください 少なくとも日曜日と土曜日が判別出来るようにしてください 出力は標準出力でもファイルでも構いません デザインは各自のお好みで 出力例1: (y-calendar 2008)=> #=Saturday, @=Sunday 2008/1 1 2 3 4 #5 @6 7 ... 2008/2 1 #2 @3 4 5 6 7 ... ... 2008/12 1 2 3 4 5 #6 @7 ... 出力例2: (y-calendar 2008)=> M T W T F S S M 2008/ 1 1 2 3 4 5 6 7 ... 2008/ 2 1 2 3 4 ... ... 2008/12 1 2 3 4 5 6 7 8 ... 出力例3: (y-calendar 2008)は2008.htmlを出力する 2008.htmlの中身 ---- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>2008 calendar</title> <style type="text/css"> * {font-family: monospace;} span {margin: 0px 3px;} span.sunday {color:red;font-weight:bold;} span.saturday {color:blue;font-weight:bold;} dd ul li{display:inline;} </style> </head> <body> <h1>2008 calendar</h1> <dl> <dt>2008/1</dt> <dd><ul> <li><span class="weekday">1</span></li> <li><span class="weekday">2</span></li> <li><span class="weekday">3</span></li> <li><span class="weekday">4</span></li> <li><span class="saturday">5</span></li> <li><span class="sunday">6</span></li> ... </ul></dd> ... </dl> </body> </html> ----[ reply ]