13日の金曜日を数え上げる
今日から20013年12月31日までの、13日の金曜日とその総数を表示してください。
どう書く?org
lequeさんのを参考に改変。list-ecを使ってるのに、さらにdropやfilterを使うのはなんだかもったいない気がするので。でも結局元のコードより長くなってるっていう(単に内包表記マクロのマイナーな機能が使ってみたいだけw)。
(use srfi-19) (use srfi-42) (let1 ds (list-ec (:let today (current-date)) (: y (date-year today) 2014) (: m 1 13) (:let d (make-date 0 0 0 0 13 m y 0)) (and (= (date-week-day d) 5) (or (> (date-year d) (date-year today)) (>= (date-month d) (date-month today)))) d) (dolist (d ds) (print (date->string d "~1"))) (print (length ds)))
13日の金曜日を表示するだけか総数を表示するだけなら、do-ecとかsum-ecとかで書けるんだけど。
この問題始めに見て、20013年まで求めさせることで2038年問題にひっかかる言語を(ゴルフ的に)劣勢に立たせるようなエグい問題かと思ったけど、単なる2013年のtypoっぽい。