No Programming, No Life

プログラミング関連の話題や雑記

お題:時間帯重複チェック

プログラミングお題の一覧はこちら

※みなさんもこのお題をお気に入りの言語で解いてみて下さい。解いたらこの記事にトラックバックをお願いします。

説明

ある二つの時間帯(日をまたがない)が重複しているかどうかをチェックする処理を書いて下さい。
時間帯は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)