bookこの広告は、90日以上更新していないブログに表示しています。algorithmある二つの時間帯(日をまたがない)が重複しているかどうかをチェックする処理を書いて下さい。時間帯は4つの整数値(開始時,開始分,終了時,終了分)により与えられます。0)時は0から24まで、分は0から59まで(ただし時が24の場合は0のみ)を採りますので、これ以外が与えられた場合は適切なエラー処理を行って下さい。開始時間よりも終了時間のほうが早かった場合は適切なエラー処理を行って下さい。(同一時刻はOKとします)ここで「重複している」とは二つの時間帯が共有している時間が1分以上ある状態と定義します。2時00分がかぶっていますが、同一時刻のため重複はしていません。あれば1時59分から2時の1分間がかぶっていますので重複しています。変換してみたら良いんじゃ?と考えたところから始めました。入力を扱えませんでした。勘弁してくださいと何とかお願いして仕様を変えてもらうことから始めます。入力が重要な意味を持つのかもしれませんし、そのぐらい簡単にできるだろうと上司のマネージャに取りつく島もないかもしれません。実装するのが難しいのではなくて、せっかく用意されているライブラリがあるのに、自分で実装するコードが増えるとそれだけバグが混入する可能性やメンテナンスのコストも高くなるから言ってるのになぁ、、、と愚痴をこぼしながら、仕方なくやることにしました。う〜ん、う〜ん、どうしようかなぁ。入力値は後で考えよう。分)のエラーチェックはできたことにして次に進んでみます。型に変換してリストで持ちます。型にしておきましょう。t要件には、時間の範囲を2つ受け取ることしか書いてありません。実装のコストを考えたら、入力を2つ受け取るのもそれ以上受け取るのもあまり大差ありません。後になって入力は5つになったとか言ってくるんだろう、、、後になってやり直すのも面倒なので、今のうちに2つ以上の入力も想定して実装しておこう。番目の開始時刻を満たすときが「重複有り」でシンプルにチェックできます。思った通り、シンプルに実装できて良さそうな感じです。さぁ、テストしようかな。入力値はどうすんだ!?分かった、分かった、それ用に特別処理を書いたら良いよね。retえぇー、、、こんな滅多に使われないような特別処理がとんどもないことになってしまいました。それまでシンプルに実装してきたのに、それを台無しにするようなコードが追加されました。含まれるときの重複判定結果に影響を与えるパターンが限定されるのでもっとシンプルなチェックだけで済んだかもしれません。時間の範囲の入力を可変にしたことで、考慮するパターンが増えて、特別処理が煩雑になってしまいました。クラスをちゃんと実装できる自信もない。日付をもって管理してみよう。処理は次のようになります。minute))エラー出力をちょっと修正して、ユーザには日付を意識させないようにします。最終的な実装はこんな感じになりました。retさっきの訳の分からない特別処理を書くよりはましかなぁ。