🐙
コード書きの練習 四日目(フェアフィールドの公式の実装)
フェアフィールドの公式とは、西暦1年1月1日からの経過日数を求める公式です。詳細は http://hp.vector.co.jp/authors/VA007833/math_note/zeller_Fairfield.html をご確認ください。
やってみた
module Practice
using Test
function fairfield(year, month, day)
if (month == 1 || month == 2)
year = year - 1
month = month + 12
end
365(year - 1) + floor(year / 4) - floor(year / 100) +
floor(year / 400) +
31 +
28 +
floor((306(month + 1) / 10)) - 122 + day
end
function main()
@testset "西暦1年1月1日からの経過日数を求める" begin
@test fairfield(1, 1, 1) == 1
@test fairfield(1, 1, 2) == 2
@test fairfield(1, 2, 1) == 32
@test fairfield(1, 3, 1) == 60
@test fairfield(1, 4, 1) == 91
@test fairfield(5, 1, 1) == 1462
end
end
end
if abspath(PROGRAM_FILE) == @__FILE__
using .Practice
Practice.main()
end
雑記
次回は、本丸のツェラーの公式を実装する予定です。
Discussion