Tuesday, November 3, 2009

Chinese calendar

It is very simple to make a Chinese calendar in Tian-gan and Di-zhi combination.
Since there is Chinese character is not supported, I just use 0-9 to represent Tian-gan
and A-L to Di-zhi.

看中国古代书籍时经常遇到天干地支的年份,具体的组合每次找起来很费劲。
干脆写了一个小程序打出所有的60年的组合。
因为不能使用汉字,只好用0-9代表天干,用A-L代表地支。

中国古代の本に良く”天幹"と"地支"の組み合わせが出ますが、すべての組み合わせ
が把握していないので、小さなプログラムを組んで、60年の組み合わせをすべて
出力しました。LISPなら簡単にできます。
ただし、漢字がサポートされていないため、0-9を”天幹"、A-Zを"地支"代用しています。

(define (chinese-calendar tian-gan di-zhi)
  (cond ((and (eq? (car tian-gan) '0) (eq? (car di-zhi) 'l))
      (display (car tian-gan)) (display (car di-zhi)))
     (else (display (car tian-gan)) (display (car di-zhi))
           (display '-)
           (chinese-calendar (append (cdr tian-gan) (list (car tian-gan)))
      (append (cdr di-zhi) (list (car di-zhi)))))))

(define (print-chn-cal)
  (chinese-calendar '(1 2 3 4 5 6 7 8 9 0) '(a b c d e f g h i j k l)))

No comments:

Post a Comment