Comment detail
除算・余剰を使わずに閏年 (Nested Flatten)すいません、紀元前に対応してませんでしたので、修正します…。
1 2 3 4 5 | --- 5333.txt 2008-01-16 07:51:10.085978672 +0900
+++ 5333.txt.fix 2008-01-16 07:51:54.569311280 +0900
@@ -2 +2 @@
- (do ((i y (1- i))
+ (do ((i (abs y) (1- i))
|





mc
#5333()
[
Common Lisp
]
Rating0/0=0.00
割り切れる数字の部分だけ真で他は偽の値を持つ循環リストを作成し、 周期4、100、400を重ね合せて判定してみました。
(defun leap-year-p (y) (do ((i y (1- i)) (c4 (%clist 4) (cdr c4)) (c100 (%clist 100) (cdr c100)) (c400 (%clist 400) (cdr c400))) ((zerop i) (or (and (car c100) (car c400)) (and (not (car c100)) (car c4)))))) (defun %clist (freq) (let ((l (make-list freq))) (setf (car l) t) (rplacd (last l) l) l))Rating0/0=0.00-0+
1 reply [ reply ]