じゃあ、おうちで学べる

本能を呼び覚ますこのコードに、君は抗えるか

夏を感じます。【pythonによるツェラーの公式の実装】

概要

皆さん、お誕生日おめでとうございます。みなさんは主人公が数学オリンピック代表候補である、「サマーウォーズ」は好きですか?? 僕は大好きです。さて、主人公の健二がはじめに夏希先輩の誕生日を聞いて一瞬で健二で日曜日だと答えてましたね(オタクはここに痺れろ!!!)。あれはツェラーの公式というものを使って求めています。実装したくなってきました…。

※この動画にはその場面がない

実装

wikipediaを見て適当に実装したため全体が雑なのはゆるして。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
if __name__ == '__main__':
    print("先輩の誕生日いつですか?")
    year = int(input("年は?:"))
    month = int(input("月は?:"))
    day = int(input("何日?:"))
    C = year/100
    Y = year%100
    F = int(day) + (26*(int(month)+1)/10) + int(Y) + (int(Y)/4) + 5*C + (C/4)
    X = (F % 7) + 1
    week = ["土","日","月","火","水","木","金"]
    print(week[int(X)]+"曜日です",)
    print(str(year) +"年"+str(month) + "月"+ str(day) +"日は"+ \
          str(week[int(X)])+"曜日でした")
    print("ひょっとして全部覚えてるの??")
    print("いえ、モジュロ演算というのを使って…当たってました?")
    print("ごめん、何曜日か知らないや!!")

注意すべきは多くの環境では負数の剰余を保証しないので、整数の合同関係を使って式の変換を行いましょう

実演

先輩の誕生日いつですか?
年は?:1992
月は?:7
何日?:19

日曜日です 1992年7月19日は日曜日でした
ひょっとして全部覚えてるの??
いえ、モジュロ演算というのを使って…当たってました?
ごめん、何曜日か知らないや!!

セリフそのままです。やったね!!

先輩の誕生日いつですか?
年は?:2017
月は?:1
何日?:3
火曜日です
2017年1月3日は火曜日でした
ひょっとして全部覚えてるの??
いえ、モジュロ演算というのを使って…当たってました?
ごめん、何曜日か知らないや!!

最後に

夏木先輩の「ごめん、何曜日か知らないや!!」という発言はオタクが女性に評価されない根幹を表した場面だと思っていて僕は好きです。サマーウォーズを見る度に夏を感じます。勝手な想像ですが主人公の小磯 健二はおそらく平成5年生まれで現在、院生をしていると思います。

参照

ツェラーの公式 - Wikipedia

映画「サマーウォーズ」公式サイト