このディレクトリの索引

#  1)西暦年から11を引き、その値を19で割った余りを求め、11を掛ける。
#  2)月の値から、以下の表に従って値を求める。
#  月	1月	2月	3月	4月	5月	6月	7月	8月	9月	10月	11月	12月
#  値	0	2	0	2	2	4	5	6	7	8	9	10
#  このうち6月までの値を「おにおににし」と覚える、と、多くの暦解説書に書かれている。
#  上記1),2)の値と日の値をそれぞれ加える。
#  求めた値を30で割った余りが、その日のおおよその月齢である。
#  但し、最大2程度の誤差がある。 以下はこれを数式化したものである。
#  y年m月d日の月齢a日を求める。
#  但し、%は剰余演算子とし、c(m)は上の表に従った定数とする。例、62%30=2、c(5)=2。


'1)西暦年から11を引き、その値を19で割った余りを求め、11を掛ける。
2)月の値から、以下の表に従って値を求める。
月	1月	2月	3月	4月	5月	6月	7月	8月	9月	10月	11月	12月
値	0	2	0	2	2	4	5	6	7	8	9	10
このうち6月までの値を「おにおににし」と覚える、と、多くの暦解説書に書かれている。
上記1),2)の値と日の値をそれぞれ加える。
求めた値を30で割った余りが、その日のおおよその月齢である。
但し、最大2程度の誤差がある。 以下はこれを数式化したものである。
y年m月d日の月齢a日を求める。
但し、%は剰余演算子とし、c(m)は上の表に従った定数とする。例、62%30=2、c(5)=2。'(_西暦年,_月の値,_日の値,_月齢) :-
        '1)西暦年から11を引き、その値を19で割った余りを求め、11を掛ける。'(_西暦年,_西暦年から11を引き_その値を19で割った余りを求め_11を掛ける),
        '2)月の値から、以下の表に従って値を求める。
月	1月	2月	3月	4月	5月	6月	7月	8月	9月	10月	11月	12月
値	0	2	0	2	2	4	5	6	7	8	9	10
'(_月の値,_値),
        '上記1),2)の値と日の値をそれぞれ加える。'(_西暦年から11を引き_その値を19で割った余りを求め_11を掛ける,_値,_日の値,_上記_1_2_の値と日の値をそれぞれ加える),
        '求めた値を30で割った余りが、その日のおおよその月齢である。
但し、最大2程度の誤差がある。 以下はこれを数式化したものである。'(_上記_1_2_の値と日の値をそれぞれ加える,_求めた値を30で割った余りが_その日のおおよその月齢である),
        _月齢 = _求めた値を30で割った余りが_その日のおおよその月齢である.



'1)西暦年から11を引き、その値を19で割った余りを求め、11を掛ける。'(_西暦年,_西暦年から11を引き_その値を19で割った余りを求め_11を掛ける) :-
        _西暦年から11を引き_その値を19で割った余りを求め_11を掛ける is ((_整列年 - 11) mod 19) * 11.


'2)月の値から、以下の表に従って値を求める。
月	1月	2月	3月	4月	5月	6月	7月	8月	9月	10月	11月	12月
値	0	2	0	2	2	4	5	6	7	8	9	10
'(_月の値,_値) :-
        月齢の月係数(_月の値,_値).


'上記1),2)の値と日の値をそれぞれ加える。'(_西暦年から11を引き_その値を19で割った余りを求め_11を掛ける,_値,_日の値,_上記_1_2_の値と日の値をそれぞれ加える) :-
        _上記_1_2_の値と日の値をそれぞれ加える is _西暦年から11を引き_その値を19で割った余りを求め_11を掛ける + _値 + _日の値.


'求めた値を30で割った余りが、その日のおおよその月齢である。
但し、最大2程度の誤差がある。 以下はこれを数式化したものである。'(_求めた値,_求めた値を30で割った余りが_その日のおおよその月齢である) :-
        _求めた値を30で割った余りが_その日のおおよその月齢である is _求めた値 mod 30.


月齢の月係数(1,0).
月齢の月係数(2,2).
月齢の月係数(3,0).
月齢の月係数(4,2).
月齢の月係数(5,2).
月齢の月係数(6,4).
月齢の月係数(7,5).
月齢の月係数(8,6).
月齢の月係数(9,7).
月齢の月係数(10,8),
月齢の月係数(11,9).
月齢の月係数(12,10).



'月齢・月名'(1,朔).
'月齢・月名'(1,新月).
'月齢・月名'(2,既朔).
'月齢・月名'(3,三日月).
'月齢・月名'(7,上弦).
'月齢・月名'(8,上弦).
'月齢・月名'(13,十三夜).
'月齢・月名'(14,小望月).
'月齢・月名'(15,望).
'月齢・月名'(15,満月).
'月齢・月名'(15,望月).
'月齢・月名'(16,十六夜).
'月齢・月名'(16,既望).
'月齢・月名'(17,立待月).
'月齢・月名'(18,居待月).
'月齢・月名'(19,寝待月).
'月齢・月名'(19,臥待月).
'月齢・月名'(20,更待月).
'月齢・月名'(22,下限).
'月齢・月名'(23,下限).
'月齢・月名'(29,晦).
'月齢・月名'(30,晦).

月末日整数(_年整数,2,29) :-
        うるう年(_年整数).
月末日整数(_年整数,2,28) :-
        \+(うるう年(_年整数)).
月末日整数(_年整数,_月整数,30) :-
        member(_月整数,[4,6,8,10]).
月末日整数(_年整数,_月整数,31) :-
        member(_月整数,[1,3,5,7,8,10,12]).

うるう年(_年整数) :-
        0 is _年整数 mod 400,!.
うるう年(_年整数) :-
        \+(0 is _年整数 mod 100),
        0 is _年整数 mod 4.