class Program
{
private static readonly Range[] ExistedRanges = {
new Range(0, 2),
new Range(5.01f, 7),
new Range(7.01f, 9)
};
public static bool IsValidRange(Range range)
{
return !ExistedRanges.Any(o => o.IsCross(range));
}
static void Main()
{
Console.WriteLine(IsValidRange(new Range(2.01f, 5)));
Console.WriteLine(IsValidRange(new Range(11, 13)));
Console.WriteLine(IsValidRange(new Range(1, 3)));
Console.WriteLine(IsValidRange(new Range(3, 10)));
Console.ReadKey();
}
}
public struct Range
{
public readonly float Start;
public readonly float End;
public Range(float start, float end)
{
Start = start;
End = end;
}
public bool IsCross(Range other)
{
return Math.Min(Math.Max(Start, End), Math.Max(other.Start, other.End)) >=
Math.Max(Math.Min(Start, End), Math.Min(other.Start, other.End));
}
}
Алгоритм проверки пересечения не мой. Взял когда-то с просторов интернета. Но не помню где взял и как он называется. Если кто-то знает, напишите в комментах.