- 1
- 2
- 3
function intersectRange (r1, r2) {
return !(Math.max(r1['min'], r2['min']) > Math.min(r1['max'], r2['max']));
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
function intersectRange (r1, r2) {
return !(Math.max(r1['min'], r2['min']) > Math.min(r1['max'], r2['max']));
}
Пересечения диапазонов.
Это то самое, которое: (r1[min] <= r2[max]) and (r1[max] >= r2[min])
Я ж джва года над этим думал, прежде чем накласть.
> Это неправильно работает.
Ну приведи пример тогда, на котором оно неправильно работает.
Очевидно, что: r1.min <= r1.max && r2.min <= r2.max
r1.min <= r2.max && r1.min <= r1.max <=> r1.min <= min(r1.max, r2.max)
r2.min <= r2.max && r2.min <= r1.max <=> r2.min <= min(r1.max, r2.max)
r1.min <= min(r1.max, r2.max) && r2.min <= min(r1.max, r2.max) <=> max(r1.min, r2.min) <= min(r1.max, r2.max)
P.S. Эквивалентности типа a <= b && a <= c <=> a <= min(b, c) надо доказывать, или они очевидны?