友達のブログで知ったんだけど
今月は金曜と土曜と日曜が5日ずつある823年に一度しかない月なんだ。考えたことあった?
などというデマが流行っていたそうです
友達は丁寧に理論的にそれがデマであることを説明していたのですが
私はコンピュータにかかわる人間なので
さくっとプログラムを書いてみることにしました
<?php
echo 'First day is Friday:' . "\n";
$c = array();
for ($y = 2010; $y < 2039; $y++) {
for ($m = 1; $m < 13; $m++) {
$t = mktime(0, 0, 0, $m, 1, $y);
$w = date('D', $t);
if ($w === 'Fri') {
echo ' ' . $y . '.' . $m . "\n";
$c[] = array('t' => $t, 'y' => $y, 'm' => $m);
}
}
}
echo "\n";
echo 'Haves 5days of Friday, Saturday and Sunday:' . "\n";
foreach ($c as $v) {
$e = date('t', $v['t']);
if ($e == 31) {
echo ' ' . $v['y'] . '.' . $v['m'] . "\n";
}
}
このプログラムはどちらかというと
金曜日と土曜日と日曜日が5日ずつある月を数え出すだけのプログラムだけどね
# プログラム中の英語が変とか言うな
まず,金曜日と土曜日と日曜日が5日ずつあるための条件のひとつである
1日が金曜日の月をリストアップ
その後,そのリストの中からもう一つの条件である月の最後の日が31日である月を探す
範囲は今年の1月から2038年まで
# 2038年以上はPHPの制限で無理
# 詳しくは「2038年問題」でググってね
で,結果がこれ
First day is Friday:
2010.1
2010.10
2011.4
2011.7
2012.6
2013.2
2013.3
2013.11
2014.8
2015.5
2016.1
2016.4
2016.7
2017.9
2017.12
2018.6
2019.2
2019.3
2019.11
2020.5
2021.1
2021.10
2022.4
2022.7
2023.9
2023.12
2024.3
2024.11
2025.8
2026.5
2027.1
2027.10
2028.9
2028.12
2029.6
2030.2
2030.3
2030.11
2031.8
2032.10
2033.4
2033.7
2034.9
2034.12
2035.6
2036.2
2036.8
2037.5
2038.1
Haves 5days of Friday, Saturday and Sunday:
2010.1
2010.10
2011.7
2013.3
2014.8
2015.5
2016.1
2016.7
2017.12
2019.3
2020.5
2021.1
2021.10
2022.7
2023.12
2024.3
2025.8
2026.5
2027.1
2027.10
2028.12
2030.3
2031.8
2032.10
2033.7
2034.12
2036.8
2037.5
2038.1
「Haves 5days of Friday, Saturday and Sunday:」以下が
金曜日と土曜日と日曜日が5日ずつある月のリスト
今年の1月も入ってるwwww
ホントかどうか確認してみた
% cal 1 2010
January 2010
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
みんな今年の1月忘れすぎだろwwwww