そんなわけで(?)あまり遊ぶ時間もなく書くネタもなかったのですが、少しだけ。今日ツイッターでこんなツイートが回ってきました。(以下の内容のため一応元は伏せます。)
今月は土曜日、日曜日、月曜日が5日ずつある、824年に一度しかない風水で言う金袋という椿事で・・・(以下略)ほほう、そんなめでたい月なのですか、と1秒ぐらい思いましたが、今月って2月ですよね。週の連続した3つの曜日が5日ずつあるためには、少なくとも31日ある月じゃないと成り立たない。 しかも土、日、月であるためには当然1日は土曜日である必要がある。今月は1日は金曜日だし、2月なので31日なわけもなく、どちらも満たしてないでしょうよ。
と思って基本スルーなのですが、そもそも感覚的に「1日が土曜日で始まる31日まである月」が824年に一度なわけないのでは?と思いますよね。長い期間で計測したとして、ざっと1日が土曜になる確率は1/7として、そのうち31日である月は1,3,5,7,8,10,12月で7月あるので7/12です。掛け合わせると7/84になり、月のうち実に8.3%の確率で起きます。年単位に直すならば12を掛けて100%、つまりほぼ毎年起きます!?(実際には1/7のとことかがぶれるので起きない年もあるはずです。)
なのでベタに今年から100年前まで数えてみました。もちろん手・・・ではなくコンピューターでw
import java.util.Calendar; public class CalendarTest { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.MONTH, Calendar.DECEMBER); cal.set(Calendar.DATE, 1); final int end = cal.get(Calendar.YEAR)-100; int count = 0, satisfied = 0; int year; while ((year = cal.get(Calendar.YEAR)) > end) { count++; do { if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY && cal.getActualMaximum(Calendar.DAY_OF_MONTH) == 31) { satisfied++; cal.set(Calendar.MONTH, Calendar.JANUARY); } cal.add(Calendar.MONTH, -1); } while (year == cal.get(Calendar.YEAR)); } System.out.println(satisfied + " years satisfied in " + count + " years"); } }答えは
86 years satisfied in 100 yearsという感じでした。つまりそんな月が起きない年は100年中14年、むしろない年のほうがはるかに珍しいですね、といいつつ14%じゃそれほど珍しくもないw
しかし何をどうすると824年なる数字が出てくるんですかね。むしろその数字の原因を探したかったんですが、特にそんなヒントは得られず。適当に選ばれたのかな。
0 件のコメント:
コメントを投稿