とりあえず復活。今日は夜勤だし。
そんなわけでリハビリにこんなプログラムを打っていた。
単純に今日の「干支」を出すだけのPerlプログラム。
#!/usr/bin/perl
# 干支日算出プログラム by mezzo forte
# http://www.mezzo.jp/
my ($sec,$min,$hour,$day,$mon,$year) = localtime(time);
$year += 1900;
$mon += 1;
$jdy = $year;
$jdm = $mon;
$nengo = "平成";
$gengo = $year - 1988;
if ($jdm <= 2){
$jdy -= 1; $jdm += 12; # 1,2月は前年の13,14月と計算
}
$total_y = int ($jdy * 365.25) + int ($jdy / 400) - int ($jdy / 100);
$total_m = int (30.59 * ($jdm - 2));
$mjd = $total_y + $total_m + $day - 678912; # フリーゲルの公式
@kan = ('甲','乙','丙','丁','戊','己','庚','辛','壬','癸');
@shi = ('寅','卯','辰','巳','午','未','申','酉','戌','亥','子','丑');
$kan_num = $mjd % 10;
$shi_num = $mjd % 12; # 修正ユリウス日より干支の引数を算出
print <<"HTML";
Content-type: text/html; charset=euc-jp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<title>干支</title>
</head>
<body>
今日は$nengo$gengo年$mon月$day日、$kan[$kan_num]$shi[$shi_num]です。
</body>
</html>
HTML
exit;
最初から作るのはめどいのでいろいろ検索して探し回ったが、どれも自分の思うような動作をしてくれないので、結局ウィキペディアの「ユリウス通日」とか参照しながら1から作成。
動作はこんな感じ。何に使うかはナイショ。ていうか、ここまで細かく作る必要は全くなかったのだが…
干支の算出方法とか調べるのも合わせて小1時間ででっち上げたプログラムなので、自由に改変も再利用もおkですが、コメント残したりリンクとか貼ってもらえるとうれしいかも。