〇 アルゴリズムの応用編、机に置く卓上万年カレンダーを再現する。
ソフトウエア開発におけるアルゴリズムの重要性が増している。指定した年月のカレンダーを表示する「万年カレンダー」の作り方を通してアルゴリズムを学んでいこう。
最後に、遊び心で、ちょっと変わったプログラムを作ってみましょう。通販サイトで調べたところ、コンピュータのプログラムではなく、机の上に置ける卓上万年カレンダーがあることがわかりました。例えば、図1-9は、高桑金属の「アクリル万年カレンダー 801923」です。
日付が印刷された板の上で、曜日が印刷された板をスライドさせることで、任意の年月のカレンダーになります。うるう年、大の月、小の月には対応しておらず、すべての年月の末日が31日になってしまいますが、これはこれで面白いものです。この万年カレンダーを模したプログラムを作ってみましょう。
卓上万年カレンダーのプログラム。
リスト1-6は、卓上万年カレンダーのプログラムです。これをsample6.pyというファイル名で作成してください。
ここでは、処理を関数に分けずに、まとめて記述しています。曜日が書かれた板と、日付が書かれた板は、それぞれ固定的な文字列としています。指定された年月の1日までの経過日数をフェアフィールドの公式で求めて、さらに1日の曜日を求めています。そして、' ' *3*(6 - day_of_week)で曜日の分だけスライドさせて(1日あたりスペース3文字ずらして)、曜日が書かれた板を表示してから、その下に日付が書かれた板をそのまま表示しています。プログラムの実行結果の例を図1-10に示します。
2020年1月のカレンダーを表示しています。卓上万年カレンダーを、できるだけ忠実にプログラムで再現したつもりですが、いかがでしょう。この卓上万年カレンダーの仕組みも、身近なアルゴリズムの1つです。