Im Moment blieb ich bei einem Problem. Es scheint wirklich trivial zu sein, aber es fällt mir immer noch schwer, eine geeignete Lösung zu finden. Das Problem ist: Man hat zwei Intervalle und soll deren Schnittpunkt finden.
Zum Beispiel:
- Schnittpunkt von [0, 3] & [2, 4] ist [2, 3]
- Der Schnittpunkt von [-1, 34] & [0, 4] ist [0, 4]
- Der Schnittpunkt von [0, 3] und [4, 4] ist leer
Es ist ziemlich klar, dass das Problem durch Tests aller möglichen Fälle gelöst werden kann, aber es wird viel Zeit in Anspruch nehmen und ist sehr fehleranfällig. Gibt es eine einfachere Möglichkeit, das Problem anzugehen? Wenn Sie wissen, dass die Lösung mir hilft, bitte. Wird sehr dankbar sein.
algorithms
interval-arithmetic
Ohidano
quelle
quelle
Antworten:
Wir können eine Lösung für dieses Problem folgendermaßen definieren. Angenommen, die Eingabeintervalle können definiert werden als und I b = [ b s , b e ] , während das Ausgabeintervall als I o = [ o s , o e ] definiert ist . Wir können den Schnittpunkt I o = I a ⋂ I b finden, indem wir Folgendes tun:ichein= [ as, eine]] ichb= [ bs, be]] ichÖ= [ os, oe]] ichÖ= Ichein⋂ Ichb
if ( oder a s > b e ) { return ∅ }bs> ae eins> be ∅
sonst {
return[ os, oe]]
}}
quelle
Angenommen, wir haben nur zwei Eingabeintervalle.
quelle
Auf eine andere einfache Weise
Gegeben:
2 Intervalle
Intervall 1 : (Start1, Ende1)
Intervall 2 : (Start2, Ende2)
Erforderlich:
Boolesche Bedingung, um zu überprüfen, ob beide Intervalle geschnitten sind oder nicht
Lösung: Die
folgenden ZWEI Bedingungen sollten zutreffen, um zu berücksichtigen, dass zwei Intervalle geschnitten werden:
1. end2> = start1
2. start2 <= end1
quelle