NEW GAME!を観ました。プログラミング始めます。(14)
努力家なねねっちがすき。
※基本的に、愛知大学の有澤先生がプログラミングの講義で使用しているテキスト「Pythonによるプログラミング入門」に沿って進めています。
※Python 2.7.13を使用しています。
====
今日のキーワード
Zeller の公式
年月日から曜日を計算する方法として Zeller の公式がある。…半ば理論的な、半ば試行錯誤によるもので、…1582 年 10 月 15 日以前には適用できない。
(引用元:Pythonによるプログラミング入門, p.34)
譜3.10 Zeller の公式を使ったカレンダープログラム
# coding: shift-jis def h(y,m,d): # h(y,m,d): day of week (Zeller's formula) # 奥村晴彦「コンピュータアルゴリズム辞典」(技術評論社,1989) # y: year, 0,1,2,.. # m: month, 1,2,..,12 # d: day of month, 1,2,..31 # return: day of week, 0,1,2,..,6 # example: h(2000,1,1) -> 6 # Saturday if m<3: y=y-1; m=m+12 return (y+y/4-y/100+y/400+(13*m+8)/5+d)%7 def cal0(n,m): # cal0(n,m) は 1 つの月のカレンダーを作成する。 # n は月の開始日の曜日を表す数字 (0,1,..,6) であり、0 が日曜日を意味する # m はその月の日数である。例えば 1 月は m=31 である # 従って 2000 年 1 月のカレンダーは cal0(6,31) で印刷される for x in ("sun","mon","tue","wed","thu","fri","sat"): print " ",x, print for x in range(0, n): print " ---", for x in range(1, m+1): print "%5d"%x, if (x+n)%7==0 : print print def cal(y,m): # y: year, 0,1,2,.. # m: month, 1,2,..,12 n=h(y,m,1) n1=h(y,m+1,1) r=(n1-n)%7 d=28+r cal0(n,d) cal(2000,1)
(引用元:Pythonによるプログラミング入門, p. 34)
こんな方法があるんだな~すごいなぁ~(わかってない)