• 締切済み

アルゴリズム java お店の営業時間を知る方法

よろしくお願いいたします。 行いたい事 条件から、お店の営業時間(open)を知るプログラムの作成 以下の条件がテキストファイルより渡されます。 ・曜日毎のopen時間 ・月毎に決まった条件のopen時間、close時間 ・特別な日のopen時間、close時間 (openは営業時間、closeは休業時間です。) 条件には、優先順位があります。 特別な日>月毎>曜日毎 曜日毎の設定で、営業時間になっていても、 特別な日として、休みを設定すれば、そちらが優先されます。 ----------------------------------------------------------------------- データ例.(実際は、決まったフォーマットで条件式が与えられています。) ・曜日毎の条件 月曜日~金曜日 7:00~19:00 open ・月毎の条件 毎月第3,4土曜日は 7:00~12:00 open 毎月1日、15日は、7:00~12:00 close ・特別な条件 特別なclose 4/29 5/3 特別なopen 5/1 19:00~ 22:00 ----------------------------------------------------------------------- この条件から、一定期間のお店の営業時間を表示する必要があります。 ----------------------------------------------------------------------- 取得したい内容 4/26日から1週間の営業時間 4/26(土)07:00~12:00 4/27(日) 4/28(月)07:00~19:00 4/29(火) 4/30(水)07:00~19:00 5/1 (木)12:00~22:00 5/2 (金)07:00~19:00 5/3 (土) ----------------------------------------------------------------------- ・データをどのようにもつか? ・どのように処理していくか? 恥ずかしながら、解法の手がかりすらつかめない状態です。 どなたか、ヒントや参考書、アルゴリズムなどを、ご教示していただけないでしょうか? よろしくお願いいたします。

みんなの回答

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

> 条件には、優先順位があります。 > 特別な日>月毎>曜日毎 ある年月日がどの条件に当てはまるかを見ていく際、 大きく2とおりの方法があります。 1)優先順位の高い方から見ていき、条件に該当した時点でそこより低い順位のチェックを省略する。 2)優先順位の低い方から見ていき、条件に該当したらそれまでの判断結果を上書きする。 実行時間などに厳しい条件があるのでしたら1)の方法を選択するのでありましょうが、 おそらく今回の場合は1)2)どちらでも大差ないと思います。 考えやすい方を選んでよいと思います。 少しでもヒントになりましたでしょうか。

  • ken-etsu
  • ベストアンサー率46% (55/119)
回答No.2

ANo.1の通り、少なくとも > ・特別な日のopen時間、close時間 には、年の情報が必要ですし、 > この条件から、一定期間のお店の営業時間を表示する必要があります。 この「一定期間」の条件にも年が必要ですね。 後は、あなたが説明した通りにプログラムを組めばいいだけです。 プログラミングは、何も特別なことではありません。他人に詳しく手順を説明するのと同じです。それを人間の言葉で書くか、プログラミング言語で書くかの違いだけです。 あなたの質問は、十分に手順を説明できていますから、後はプログラミング言語で書き下すだけです。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

ある月日が何曜日であるかを知るためには、年の情報が必要です。 ところが、投稿の中には見あたりません。 年の条件はどのように与えられますか?教えてください。

namida6000
質問者

補足

asuncionさん、ありがとうございます。 説明不足で申し訳ございません。 表示を行う範囲の日時は、年月日を持っています。 入力画面で、範囲を指定します。 質問した内容の場合は、 開始日時 2008/04/26 終了日時 2008/05/03 を入力します。 また、取得するデータも年月日&日時を持っています。 特別な日の場合 close,2008/4/29 0:00,2008/4/30 0:00 (openまたはclose,開始時間,終了時間) よろしくおねがいします。