今年のバレンタインデーは終末と重なる。また。
の終末ルールはきちんとしています。アイデアの一部を説明する JSL スニペットを次に示します。
For( year = 1901, year <= 2099, year++, // 1900 was not a leap year and 2100 won't be
really =
Day Of Week( Date DMY( if(mod(year,4),3,4), 1, year ) ) == // 3rd day of January, 3 years out of 4
Day Of Week( Date DMY( if(mod(year,4),28,29), 2, year ) ) == // last day of February (29 on leap years)
Day Of Week( Date DMY( 14, 3, year ) ) == // PI-day
Day Of Week( Date DMY( 4, 4, year ) ) == // even months, same day, after February
Day Of Week( Date DMY( 6, 6, year ) ) == //
Day Of Week( Date DMY( 8, 8, year ) ) == //
Day Of Week( Date DMY( 10, 10, year ) ) == //
Day Of Week( Date DMY( 12, 12, year ) ) == //
Day Of Week( Date DMY( 7, 11, year ) ) == // familiar store name in US
Day Of Week( Date DMY( 11, 7, year ) ) == //
Day Of Week( Date DMY( 9, 5, year ) ) == // 9-to-5 working hours
Day Of Week( Date DMY( 5, 9, year ) ) == //
Day Of Week( Date DMY( 4, 7, year ) ) == // US Independence Day
Day Of Week( Date DMY( 26, 12, year ) ); // boxing day
If( !really, Show( year ) );
);
Write( "done\!n" );
Write( {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday"}[Day Of Week( Date DMY( 4, 4, 2015 ) )] );
このルールの優れた点は、1 年を通して (少なくとも 2 月以降は)、1 年を通して同じ曜日に当たる日付のパターンが記憶に残ることです。2015年の終末は土曜日; 2015 年 4 月 4 日、2015 年 6 月 6 日、2015 年 8 月 8 日、2015 年 10 月 10 日、2015 年 12 月 12 日はすべて土曜日、7 月 11 日、11 月 7 日、5 月 9 日、および 9 月も同様です。 5. DMY または MDY。私たちにとって幸運なことに、閏日は年のかなり早い時期に発生します。
mod() 関数は、上記の JSL で使用され、うるう年に応じて 1 月と 2 月の適切な日を選択します。100 で割り切れるほとんどの年はうるう年ではありませんが、2000 年は 400 で割り切れるため、うるう年でした。したがって、for ループの制限です。
特に他のほとんどのプログラミング言語に精通しているプログラマーであれば、JSL の == 比較のチェーンについて疑問に思うかもしれません。JMPは本当にそれを行います。例 (混合しないでください<と> )、
1 < 2 < 3 < 4 < 5
1
と
1 < 2 < 4 < 3 < 5
0
上記のJSLでは、==のチェーンの結果が代入されます本当;値は 1 なので、 !本当test は 0 であり、JSL はすべてテストに合格するため、年を出力しません。for ループに 1900 または 2100 を追加すると、それらが出力されます。これは Doomsday ルールが間違っているからではなく、上記の JSL が 1 月と 2 月の正しい日を選択していないためです。
最後のステートメントも少し説明する必要があります。
Write( {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}[Day Of Week( Date DMY( 4, 4, 2015 ) )] );
土曜日
これは write() 関数への 1 つの呼び出しです。 { 中括弧 } 内の日付のリストは、[ 角括弧 ] 内の式によって添字付けされます。DayOfWeek は、指定された日付に対して、日曜日の場合は 1 を返します。土曜日の場合は 7 を返します。4 月 4 日は常に終末の日です。
2017年9月30日編集:フォーマットの修復