今回は映画サマーウォーズの
なつき先輩の誕生日から曜日求める
小ネタです
解説動画はこちら
モジュロ演算
今回はあの映画
「サマーウォーズ」に出てきた
なつき先輩の誕生日から
曜日を求めていたシーンのやつです
あのシーンでは、いわゆる
余り(剰余)を求める計算を行っていました
モジュロ演算とは
単に余りを求める計算のことです。
これとツェラーの公式
がつながります。
ツェラーの公式
西暦(YYYYMMDD)から
曜日を求める公式です。
こんな感じの計算式ですが
これを使うと余りが
0-6の範囲になり、これが曜日に対応する
ということになります。
誕生日から曜日を求めるコード
コードはこんな感じです
年月日の変数を変えて貰えば
どの年月日にも対応されます
なつき先輩の誕生日は
1992年7月19日となっています
コードを使って求めると
日曜日
だそうです。
当たっていましたかね?
余り使う機会のない
小ネタですが
どこかで使われることがあったら
嬉しいかもしれないですね
今日はここまでです
それでは
なつき先輩の誕生日から曜日求める
小ネタです
解説動画はこちら
モジュロ演算
今回はあの映画
「サマーウォーズ」に出てきた
なつき先輩の誕生日から
曜日を求めていたシーンのやつです
あのシーンでは、いわゆる
余り(剰余)を求める計算を行っていました
モジュロ演算とは
単に余りを求める計算のことです。
これとツェラーの公式
がつながります。
ツェラーの公式
西暦(YYYYMMDD)から
曜日を求める公式です。
h=(d+[26(m+1)/10]+Y+[Y/4]-2[y/100]+[y/400])mod 7
こんな感じの計算式ですが
これを使うと余りが
0-6の範囲になり、これが曜日に対応する
ということになります。
0=土曜日
1=日曜日
2=月曜日
3=火曜日
4=水曜日
5=木曜日
6=金曜日
誕生日から曜日を求めるコード
コードはこんな感じです
年月日の変数を変えて貰えば
どの年月日にも対応されます
# モジュロ演算で曜日を求めるコード def zeller(year, month, day): # 1月と2月は前年の13月、14月として扱う if month < 3: month += 12 year -= 1 y = year % 100 century = year // 100 # ツェラーの公式より h = (day + (26 * (month + 1)) // 10 + y + (y // 4) - (2 * century) + (century // 4)) % 7 # 曜日 # 0=土曜日, 1=日曜日, 2=月曜日, 3=火曜日, 4=水曜日, 5=木曜日, 6=金曜日 return h weekdays = ["土曜日", "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日"] # 使用例 year, month, day = 2025, 2, 1 h = zeller(year, month, day) weekday_name = weekdays[h] print(f"{year}年{month}月{day}日は{weekday_name}です。")2025年2月1日は土曜日です。
なつき先輩の誕生日の曜日はなんだったか?
なつき先輩の誕生日は
1992年7月19日
コードを使って求めると
日曜日
だそうです。
当たっていましたかね?
余り使う機会のない
小ネタですが
どこかで使われることがあったら
嬉しいかもしれないですね
今日はここまでです
それでは
コメントする