これは最も単純なロジックです。
A.start <= B.end && B.start <= A.end
それは...あなたは(重複仮定)両方の範囲に存在するいくつかの点、Xを、考慮すれば、これは理にかなっている理由は簡単だ
A (start)-------- X --------(end)
B (start)---- X -------------(end)
開始を押して想像して彼らはXを越えることができないという要件で終わります(そうであれば、Xはもう両方の範囲にはありません)。開始は常にB終了の前にあり、逆もまた同様です。
エッジをどのように処理するかによって、<=
〜<
を微調整できます。
console.clear()
let l = console.log
function checkOverlap(A, B){
return (A.start <= B.end && B.start <= A.end)
}
// Checking All combinations
l(checkOverlap({start: 0, end: 2},{start: 3, end: 5})) // false
l(checkOverlap({start: 0, end: 4},{start: 3, end: 5})) // true
l(checkOverlap({start: 0, end: 6},{start: 3, end: 5})) // true
l(checkOverlap({start: 3, end: 5},{start: 0, end: 2})) // false
l(checkOverlap({start: 3, end: 5},{start: 0, end: 4})) // true
l(checkOverlap({start: 3, end: 5},{start: 0, end: 6})) // true
あなたはどのようなコードを試してみましたか? –