このディレクトリの索引


うるう年は何回来るか(_年起点,_年終点,_うるう年の回数) :-
        count((
                    between(_年起点,_年終点,_年),
                    うるう年(_年)),
                _うるう年の回数).

'ある日から後の年のある日は何日目か(起点日と終点日はそれぞれ日数に含める)'(_年起点,_月起点,_日起点,_年終点,_月終点,_日終点,_何日目) :-
        起点日と終点日はそれぞれ日数に含める,
        大晦日は何日目か(_年起点,_月起点,_日起点,_大晦日は何日目),
        翌年の元旦から後の年の大晦日は何日目か(_年起点,_年終点,_何日目_1),
        大晦日は何日目か(_年終点,_月終点,_日終点,_何日目_2),
        _何日目 is _大晦日は何日目 + _何日目_1 - _何日目_2.

'ある日から後の年のある日は何日目か(起点日と終点日はともに日数に含めない)'(_年起点,_月起点,_日起点,_年終点,_月終点,_日終点,_何日目) :-
        起点日と終点日はともに日数に含めない,
        大晦日は何日目か(_年起点,_月起点,_日起点,_大晦日は何日目),
        翌年の元旦から後の年の大晦日は何日目か(_年起点,_年終点,_何日目_1),
        大晦日は何日目か(_年終点,_月終点,_日終点,_何日目_2),
        _何日目 is _大晦日は何日目 + _何日目_1 - _何日目_2 - 2.

'ある日から後の年のある日は何日目か(起点日と終点日のどちらかは日数に含めない)'(_年起点,_月起点,_日起点,_年終点,_月終点,_日終点,_何日目) :-
        起点日と終点日はともに日数に含めない,
        大晦日は何日目か(_年起点,_月起点,_日起点,_大晦日は何日目),
        翌年の元旦から後の年の大晦日は何日目か(_年起点,_年終点,_何日目_1),
        大晦日は何日目か(_年終点,_月終点,_日終点,_何日目_2),
        _何日目 is _大晦日は何日目 + _何日目_1 - _何日目_2 - 1.

ある年の元旦から後の年の大晦日は何日目か(_年起点,_年終点,_何日目) :-
        うるう年は何回来るか(_年起点,_年終点,_うるう年の回数),
        '基本は一年365日で計算し、それにうるう年の回数(日数)を加える'(_年起点,_年終点,_うるう年の回数,_何日目).

'基本は一年365日で計算し、それにうるう年の回数(日数)を加える'(_年起点,_年終点,_うるう年の回数,_何日目) :-
        _何日目 is _うるう年の回数 + 365 * (_年終点 - _年起点 + 1).

翌年の元旦から後の年の大晦日は何日目か(_年起点,_年終点,_何日目) :-
        _翌年 is _年起点 + 1,
        ある年の元旦から後の年の大晦日は何日目か(_翌年,_年終点,_何日目).

ある年の元旦から後の年のある日は何日目か(_年起点,_年終点,_月終点,_日終点,_何日目) :-
        _前年 is _年終点 - 1,
        ある年の元旦から後の年の大晦日は何日目か(_年起点,_前年,_何日目_1),
        ある年月日はその年の元旦から何日目か(_年終点,_月終点,_日終点,_何日目_2),
        _何日目 is _何日目_1 + _何日目_2.

ある年月日はその年の元旦から何日目か(_年,_月,_日,_元旦から何日) :-
        月日数ならび(_年,_月日数ならび),
        _前月 is _月 - 1,
        length(L0,_月),
        append(L0,_,_月日数ならび),
        sum(L0,_前月末日までの日数),
        _元旦から何日 is _前月末日までの日数 + _日.

大晦日は何日目か(_年,_月,_日,_大晦日は何日目) :-
        月日数ならび(_年,_月日数ならび),
        翌月から一日から大晦日は何日目か(_年,_月,_日,_月日数ならび,_翌月の一日から大晦日は何日目),
        今日を含めて今月末日までの日数(_年,_月,_日,_月日数ならび,_今日を含めて今月の末日までの日数),
        _大晦日は何日目 is _今日を含めて今月の末日までの日数 + _翌月の一日から大晦日は何日目.

翌月から一日から大晦日は何日目か(_年,_月,_日,_月日数ならび,_何日目) :-
        length(L0,_月),
        append(L0,_翌月からの月日数ならび,_月日数ならび),
        sum(_翌月からの月日数ならび,_何日目).

今日を含めて今月末日までの日数(_年,_月,_日,_月日数ならび,_今日を含めて今月の末日までの日数) :-
        nth1(_月,_月日数ならび,_今月の日数),
        _今日を含めて今月の末日までの日数 is _今月の日数 - _日 + 1.

明日から今月末日までの日数(_年,_月,_日,_月日数ならび,_明日から今月の末日までの日数) :-
        nth1(_月,_月日数ならび,_今月の日数),
        _明日から今月の末日までの日数 is _今月の日数 - _日.

月日数ならび(_年,[31,29,31,30,31,30,31,31,30,31,30,31]) :-
        うるう年(_年),!.
月日数ならび(_年,[31,28,31,30,31,30,31,31,30,31,30,31]).

うるう年(_年文字列) :-
        atom(_年文字列),
        atom_to_term(_年文字列,_年整数,_),!,
        うるう年(_年整数).
うるう年(_年) :-
        0 is _年 mod 400,!.
うるう年(_年) :-
        0 is _年 mod 100,!,
        fail.
うるう年(_年) :-
        0 is _年 mod 4,!.
うるう年(_年) :-
        \+(0 is _年 mod 4),
        fail.

起点日と終点日はそれぞれ日数に含める.

起点日と終点日はともに日数に含めない.