gooブログはじめました!

万年カレンダー で 学ぶ アルゴリズム。

〇 アルゴリズムの応用編、机に置く卓上万年カレンダーを再現する。

ソフトウエア開発におけるアルゴリズムの重要性が増している。指定した年月のカレンダーを表示する「万年カレンダー」の作り方を通してアルゴリズムを学んでいこう。

最後に、遊び心で、ちょっと変わったプログラムを作ってみましょう。通販サイトで調べたところ、コンピュータのプログラムではなく、机の上に置ける卓上万年カレンダーがあることがわかりました。例えば、図1-9は、高桑金属の「アクリル万年カレンダー 801923」です。

図1-9 卓上万年カレンダーの例(高桑金属のアクリル万年カレンダー 801923)
図1-9、卓上万年カレンダーの例(高桑金属のアクリル万年カレンダー 801923)

日付が印刷された板の上で、曜日が印刷された板をスライドさせることで、任意の年月のカレンダーになります。うるう年、大の月、小の月には対応しておらず、すべての年月の末日が31日になってしまいますが、これはこれで面白いものです。この万年カレンダーを模したプログラムを作ってみましょう。

卓上万年カレンダーのプログラム。

リスト1-6は、卓上万年カレンダーのプログラムです。これをsample6.pyというファイル名で作成してください。

リスト1-6 卓上万年カレンダーのプログラム(sample6.py)
リスト1-6、卓上万年カレンダーのプログラム(sample6.py)。

ここでは、処理を関数に分けずに、まとめて記述しています。曜日が書かれた板と、日付が書かれた板は、それぞれ固定的な文字列としています。指定された年月の1日までの経過日数をフェアフィールドの公式で求めて、さらに1日の曜日を求めています。そして、' ' *3*(6 - day_of_week)で曜日の分だけスライドさせて(1日あたりスペース3文字ずらして)、曜日が書かれた板を表示してから、その下に日付が書かれた板をそのまま表示しています。プログラムの実行結果の例を図1-10に示します。

図1-10 リスト1-6のプログラム(sample6.py)実行結果の例
図1-10、リスト1-6のプログラム(sample6.py)実行結果の例。

2020年1月のカレンダーを表示しています。卓上万年カレンダーを、できるだけ忠実にプログラムで再現したつもりですが、いかがでしょう。この卓上万年カレンダーの仕組みも、身近なアルゴリズムの1つです。


ランキングに参加中。クリックして応援お願いします!

名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「〝 たぬき の 「 スマホ & パソコン 」 ワールド 〟」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事