🔖
コード書きの練習 五日目(ツェラーの公式の実装)
ツェラーの公式とは、日付から曜日を求めることが出来る公式です。フェアフィールドの公式を利用しています。詳細は 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 zehher(year, month, day)
rem(fairfield(year, month, day), 7)
end
function zehherString(year, month, day)
dict = Dict(
0 => "日曜日",
1 => "月曜日",
2 => "火曜日",
3 => "水曜日",
4 => "木曜日",
5 => "金曜日",
6 => "土曜日",
)
dict[zehher(year, month, day)]
end
function main()
@testset "0:日曜日、1:月曜日、2:火曜日、省略、6:土曜日である" begin
@test zehher(1950, 6, 25) == 0
@test zehher(1955, 11, 1) == 2
@test zehher(2020, 7, 24) == 5
@test zehher(2023, 1, 1) == 0
@test zehher(2023, 4, 30) == 0
end
@testset "曜日を数字ではなく、日本語の文字列で表現しました" begin
@test zehherString(1950, 6, 25) == "日曜日"
@test zehherString(1955, 11, 1) == "火曜日"
@test zehherString(2020, 7, 24) == "金曜日"
@test zehherString(2023, 1, 1) == "日曜日"
@test zehherString(2023, 4, 30) == "日曜日"
end
end
end
if abspath(PROGRAM_FILE) == @__FILE__
using .Practice
Practice.main()
end
雑記
ね、眠い。。。次回は、素数と完全数の判定の実装予定です。
Discussion