JVM Scripting and Calendar

Oct 18, 2011 16:42

В последнее время всё чаще использую Clojure в качестве скриптового языка, когда нужно быстро получить ответ на какой-либо вопрос, и писать полноценную программу не представляется целесообразным.

Сегодня наткнулся на письмо счастья следующего содержания:

":-) В этом октябре - 5 понедельников, 5 суббот и 5 воскресений. Это происходит раз в 823 года. Это называется - мешок денег. Поэтому скопируй это на свой статус и деньги придут в течении 4 дней. "

Моментально возник вопрос: "А в каких последних 5 годах первым днём октября была суббота?"
Накидать ответ было недолго: в 2011, 2005, 1994, 1988 и 1983. Действительно, раз в 823 года ровно.


(import java.util.Calendar) (defn get-weekday [cal year month day] (.set cal year month day) (.get cal Calendar/DAY_OF_WEEK)) (println "Years: " (let [cal (Calendar/getInstance)] (take 5 (filter (fn [year] (= (get-weekday cal year Calendar/OCTOBER 1) Calendar/SATURDAY)) (iterate dec 2011)))))
-------------------------

Years: (2011 2005 1994 1988 1983)

clojure

Previous post Next post
Up