十干十二支を数え上げるパッケージを作ってみた
夏の終りの土用の丑の日に
という記事を Zenn に上げたが,調子に乗って Go パッケージ化してみた。
これを使って,たとえば
// +build run
package main
import (
"flag"
"fmt"
"os"
"time"
"github.com/spiegel-im-spiegel/jzodiac"
)
func main() {
flag.Parse()
args := flag.Args()
if len(args) < 1 {
fmt.Fprintln(os.Stderr, os.ErrInvalid)
return
}
for _, s := range args {
t, err := time.Parse("2006-01-02", s)
if err != nil {
fmt.Fprintln(os.Stderr, err)
continue
}
kan, shi := jzodiac.ZodiacYearNumber(t.Year())
fmt.Printf("Year %v is %v%v\n", t.Year(), kan, shi)
kan, shi = jzodiac.ZodiacDayNumber(t)
fmt.Printf("Day %v is %v%v\n", t.Format("2006-01-02"), kan, shi)
}
}
というコードを組めば
$ go run sample.go 2021-07-28
Year 2021 is 辛丑
Day 2021-07-28 is 丁丑
という感じに年と日の干支を取得できる。 ちなみに月の干支は旧暦と連動しているので,今回は実装していない。
検算には,若い頃に買った『新こよみ便利帳』に載っていた表を使った。 何でも取っておくものである(笑)
参考図書
- プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)
- 丸善出版 2016-06-20
- 単行本(ソフトカバー)
- 4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN), 9784621300251 (ISBN)
- 評価
著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。
- 新こよみ便利帳―天文現象・暦計算のすべて
- 暦計算研究会 (編集)
- 恒星社厚生閣 1991-05-01
- 単行本
- 4769907001 (ASIN), 9784769907008 (EAN), 4769907001 (ISBN)
- 評価
今となっては古い内容だが,暦や天体位置の一覧表が載っていて当時はそれなりに役に立った。