お題:時間帯重複チェック
プログラミングお題の一覧はこちら
※みなさんもこのお題をお気に入りの言語で解いてみて下さい。解いたらこの記事にトラックバックをお願いします。
説明
ある二つの時間帯(日をまたがない)が重複しているかどうかをチェックする処理を書いて下さい。 時間帯は4つの整数値(開始時,開始分,終了時,終了分)により与えられます。 例1) 午前1時から午前5時30分まで (1, 0, 5, 30) 例2) 午前9時から午後11時まで (9, 0, 23, 0) 時は0から24まで、分は0から59まで(ただし時が24の場合は0のみ)を取りますので、これ以外が与えられた場合は適切なエラー処理を行って下さい。 開始時間よりも終了時間のほうが早かった場合は適切なエラー処理を行って下さい。(同一時刻はOKとします) ここで「重複している」とは二つの時間帯が共有している時間が1分以上ある状態と定義します。 ですので、(1, 0, 2, 0) と (2, 0, 3, 0) は 2時00分がかぶっていますが、同一時刻のため重複はしていません。 もし、(1, 0, 2, 0) と (1, 59, 3, 0) であれば1時59分から2時の1分間がかぶっていますので重複しています。 <チェック例> timeDuplicationCheck( (1, 0, 5, 30), (9, 0, 23, 0) ) // => false (重複なし) timeDuplicationCheck( (1, 0, 2, 0), (2, 0, 3, 0) ) // => false (重複なし) timeDeplicationCheck( (1, 0, 2, 1), (1, 59, 3, 0) ) // => true (重複あり)
修正履歴
- お題例文の中で「午後23時」になってしまっていた部分を午後11時に変更しました。また「採ります」を「取ります」に修正しました。(2011-03-29)