2021-11-10
複雑化する一方の世の中、対抗するには解決する手段の積み上げが大事。 コンピューターと、コンピューターで再現可能なアルゴリズムは協力な武器ですね。


12月のお楽しみ、IchigoJam Advent Calendar、2021年版、作りました!
IchigoJamに関する思い出や、ミニテクニック、作品など、どうぞ気軽にご参加くださいっ。

今年で6年目!過去のカレンダーの投稿の気になるタイトルを読んでみたり、他のカテゴリーなども参考にどうぞ。

カレンダーとコンピューターと言えばうるう年判定。
閏年は、1年の公転周期が、365日より5時間48分45秒ほど長いことから、だいたい4年に一度1日長くする閏日を作って調整する知恵です。

下記のようなアルゴリズムで判定します。

1. 西暦年が4で割り切れる年は(原則として)閏年。
2. ただし、西暦年が100で割り切れる年は(原則として)平年。
3. ただし、西暦年が400で割り切れる年は必ず閏年。

「原則として」というのが分かりづらいので、論理を反転して

1. 西暦年が4で割り切れない年は平年で決まり。
2. そうでない西暦年が100で割り切れない年は閏年で決まり。
3. そうでない西暦年が400で割り切れる年は閏年で決まり。
4. そうでない西暦年は平年。

としたほうがプログラマー的に分かりやすい。

IchigoJam BASICで表すと・・・

1 INPUT Y 10 IF Y%4>0 ?"NOT URU":END 20 IF Y%100>0 ?"URU!":END 30 IF Y%400=0 ?"URU!":END 40 ?"NOT URU":END

となります。

もっと短く判定したい時は、1式でまとめます

1 INPUT Y 10 IF Y%4=0 AND Y%100>0 OR Y%400=0 ?"URU!":END 20 ?"NOT URU":END

IchigoJamを使ったカレンダーづくり、ぜひチャレンジしてみてください!

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS