誕生日の曜日を知る方法 [応用] | 逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓rpnの実践ウェブ   
rpn hacks! アールピーエヌ・ハックスサイトマップ

rpn | 応用 | rpn電卓の高いポテンシャルはビジネス・実用・ゲームなどのアプリケーションにも対応。

HOME > 応用 > 誕生日の曜日を知る方法 hatena yahoo buzzurl livedoor del.icio.us nifty newsing twitter facebook rss ソーシャルブックマーク

誕生日の曜日を知る方法

 生まれた日は覚えていても、生まれた曜日は忘れてしまうものです。記念日だって曜日までは覚えていませんよね。そんな時、日付から曜日を計算するプログラムがあったら便利です。親しい彼氏・彼女の誕生曜日を覚えておくと、ちょっとした話のきっかけになるかも知れません。

情報年月日から曜日を算出する計算式は、rpn入門(初級編)ガウス記号にあります。

曜日を求めるweekdayプログラム

 そこで、誕生日を指定するだけで、曜日を計算するrpnプログラムを紹介します。使い方は以下のように簡単です。DOSプロンプトを起動してからrpn式を入力してください。

  >rpn 19690720 -c weekday
  0


"19690720"は日付です。8桁で表現します。頭の4桁が西暦年、次の2桁が月、最後の2桁が日です。この例では、1969年7月20日ですね。次のweekdayがobjファイルになっているrpnプログラムになります。

weekdayの計算結果は数値で出てきますが、以下のようにそれぞれの曜日に対応しています。

  0=日曜、1=月曜、2=火曜、3=水曜、4=木曜、5=金曜、6=土曜


今回は0だったので日曜ですね。

対話型プログラムってなに

 対話型プログラムと言われるものがあります。事前に全部の条件を設定してからプログラムを走らせるのではなく、必要になった時点で人間からの入力を待つプログラムです。人間とコンピュータが対話しているようなので、対話型プログラムといいます。

ちなみに、上記のrpnプログラムのweekdayは非対話型プログラムです。プログラムに渡す数値(年月日)を設定した後は、プログラムの終了まで一切人間の入力はありませんでしたよね。どちらのプログラムスタイルがいいのかは用途によるのですが、分かりやすさは対話型プログラムに軍配が上がります。

実はこのweekdayプログラムですが、指定された日付がなければ、日付の入力を促すプロンプトが出てくるようになっているのです。プロンプトで指示された年、月、日を入力すれば、最後に曜日が表示されるようになっています。例で示しましょう。

  >rpn -c null | rpn -c weekday
  rpn [年月日] -c weekday <stdin
  年=


先に空ファイルを渡してもらいます(空ファイルに関してはpackage入門(カレンダー・システム編)の空ファイルを参照ください)。すると、プロンプトとして"年"が表示されましたね。"="に続いて、1969とキーを打って最後にエンターキーを押してください。

  >rpn -c null | rpn -c weekday
  rpn [年月日] -c weekday <stdin
  年=1969
  月=


次のプロンプトは"月"です。同様に7を入力します。

  >rpn -c null | rpn -c weekday
  rpn [年月日] -c weekday <stdin
  年=1969
  月=7
  日=


最後のプロンプトの"日"には20を入力です。

  >rpn -c null | rpn -c weekday
  rpn [年月日] -c weekday <stdin
  年=1969
  月=7
  日=20
  日曜日


今度は"日曜日"と表示されましたね。計算結果が数字だと何だか分かりづらいし、変換表を覚える必要があったのですが、曜日で表示されれば便利ですね。ちなみに、この1969年7月20日は人類が初めて月に降り立った日です。

自分や恋人、身内の人の誕生曜日を計算してみてください。そして、節目となった人生の記念日が何曜日だったのか。思いを馳せてみるのもいいかもしれませんね。

対話型 vs 非対話型

 対話型と非対話型のどちらのプログラム形式がよいのでしょうか。分かりやすさは対話型プログラムですが、非対話型プログラムを重宝するときもあります。決まり決まった入力パターンや大量のデータを計算するときには、人間の入力があると面倒なこともあるのです。

例えば、大量の日付(8桁)が格納されているファイルがあるとして、それらの曜日を計算したいとき一つ一つweekdayプログラムを起動させて、答えを出していては日が暮れてしまいます。

そんな時に非対話型形式に対応したプログラムであれば、以下のように一発で答えが求まります。

  >rpn -c weekday <date.txt >weekday.txt


date.txtファイルに日付が1000件入っていても、一瞬でweekday.txtに曜日変換された数値コードが格納されるわけです。

AKB48初期メンバーの誕生曜日を求める

 ファイルを使って一気に日付から曜日に変換する例として、2010年くらいにブレークし始めたアイドルグループAKB48の初期メンバーの誕生曜日を求めてみましょう。

akb48.txtファイルに誕生日が格納されているとします。格納順は名前の前の番号順です。

                    AKB48初期メンバーの誕生日
  ===============================================================
   1 板野友美   1991年7月3日          6 折井あゆみ 1985年7月20日
   2 宇佐美友紀 1984年12月6日         7 川崎希     1987年8月23日
   3 浦野一美   1985年10月23日        8 小嶋陽菜   1988年4月19日
   4 大江朝美   1989年6月15日         9 駒谷仁美   1988年12月16日
   5 大島麻衣   1987年9月11日        10 佐藤由加理 1988年11月22日

  11 高橋みなみ 1991年4月8日         16 星野みちる 1985年11月19日
  12 戸島花     1988年7月11日        17 前田敦子   1991年7月10日
  13 中西里菜   1988年6月26日        18 増山加弥乃 1994年2月10日
  14 成田梨紗   1991年3月1日         19 峰岸みなみ 1992年11月15日
  15 平嶋夏海   1992年5月28日        20 渡邊志穂   1987年10月25日


akb48.txtファイルの内容は8桁の西暦データです。

  >type akb48.txt
  19910703
  19841206
  19851023
      :
   (中略)
      :
  19940210
  19921115
  19871025


一気に曜日に変換します。

  >rpn -c weekday <akb48.txt
  3
  4
  3
  :
  (中略)
  :
  4
  0
  0


数値を曜日に変換するとAKB48初期メンバーの誕生曜日が分かります。表にまとめておきます。

             AKB48初期メンバーの誕生曜日
  ================================================
   1 板野友美   水曜日         6 折井あゆみ 土曜日
   2 宇佐美友紀 木曜日         7 川崎希     日曜日
   3 浦野一美   水曜日         8 小嶋陽菜   火曜日
   4 大江朝美   木曜日         9 駒谷仁美   金曜日
   5 大島麻衣   金曜日        10 佐藤由加理 火曜日

  11 高橋みなみ 月曜日        16 星野みちる 火曜日
  12 戸島花     月曜日        17 前田敦子   水曜日
  13 中西里菜   日曜日        18 増山加弥乃 木曜日
  14 成田梨紗   金曜日        19 峰岸みなみ 日曜日
  15 平嶋夏海   木曜日        20 渡邊志穂   日曜日


週末に生まれている人は5人なので20%の確率。土日に生まれる理論値の28%より低めです。やはり、生まれる曜日には偏りがあるのでしょうか。

応用応用コーナーに戻るLinkIcon

情報実践コーナー統計アラカルトでは、週末に生まれる人は少ないという都市伝説を生まれる曜日は神様次第で検証しています。そこでは、非対話型weekdayをふんだんに使っています。

警告rpnプログラムを実行するには、rpn試用版かrpn標準版が必要です(バージョンの違いはこちら)。

情報weekday, nullはカレンダー・システムパッケージに同梱されています。詳しくはプロダクトを参照ください。

記事閲覧ランキング (毎月初更新)

人気記事(過去1ヶ月閲覧数)

広報他にもアプリケーションを公開中!タブ「i~v..」をご覧ください。

※応用コーナーのTOP

紹介 rpnの利用シーンはこちら…

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ

実践他の分野への挑戦は実践TOP

i

アプリケーションで楽しもう

広報他にもアプリケーションを公開中!タブ「i~v..」をご覧ください。

※応用コーナーのTOP

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ

実践他の分野への挑戦は実践TOP

ii

アプリケーションで楽しもう

広報他にもアプリケーションを公開中!タブ「i~v..」をご覧ください。

※応用コーナーのTOP

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ

実践他の分野への挑戦は実践TOP

iii

アプリケーションで楽しもう

広報他にもアプリケーションを公開中!タブ「i~v..」をご覧ください。

※応用コーナーのTOP

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ

実践他の分野への挑戦は実践TOP

iv

アプリケーションで楽しもう

広報他にもアプリケーションを公開中!タブ「i~v..」をご覧ください。

※応用コーナーのTOP

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ

実践他の分野への挑戦は実践TOP

v …

アプリケーションで楽しもう

広報他にもアプリケーションを公開中!タブ「i~v..」をご覧ください。

※応用コーナーのTOP

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ

実践他の分野への挑戦は実践TOP

書籍紹介

記事に関連した書籍

本ウェブサイトで扱った話題に関連した書物で、スタッフが実際に読了したものを紹介。

書籍数学の書籍
数の世界は思ったよりもエキサイティング。

  • 書籍統計の書籍
  • ビジネスで統計が使えるととっても有利。

書籍投資の書籍
失敗しない投資には広範囲で実践的な知識が必要。

警告バックスラッシュはエンマークに読み替えてください( IEのみ)。
バックスラッシュとエンマーク

警告文字で作られた図表や式が崩れることがあります。ブラウザによっては固定幅フォントをMSゴシックにするときれいに表示されます。それでも崩れる場合は図表や式をメモ帳にコピー後、閲覧下さい。

警告rpn試用版と標準版(2kリビジョン)はダブルクォートで囲ってください。

rpn 1 2 + ⇒ rpn "1 2 +"
rpn 1 -c foo ⇒ rpn "1" -c "foo"

ダブルクォートは省略できることが多いのですが、慣れない間は囲んだほうが無難です。なお、本ウェブサイトの記事ではrpn標準版(98リビジョン)を使用しているため囲っていません。詳しくは技術サポートの「rpn TIPS参照ください。

注意rpnの障害情報はこちら

警告rpn試用版の場合、複雑なプログラムや処理時間のかかるプログラムの一部には動作しないものがあるかもしれません。あくまで無料提供であることを勘案・了承ください。rpn標準版は、すべてのプログラムが動作します。