2016-03-30 4 views
1

Я хочу узнать все смежные диапазоны, соответствующие/охватывающие целевой диапазон в определенном порядке. Напр.Поиск всех разных смежных диапазонов, соответствующих/охватывающих определенный диапазон в определенном порядке

Данный диапазон 5-12

диапазоны Источник являются

1-7

1-13

4-8

4-12

5 -7

5-8

5-12

5-13

7-12

8-12

Таким образом, результаты должны быть с приоритетом следующим образом

1. 5-12 (Exact match) 
2. 5-7,7-12 (Two Adjacent ranges match)[Ranges Start And End Exact Match] 
2. 5-8,8-12 (Two Adjacent ranges match)[Ranges Start And End Exact Match] 
3. 5-13 (Single Covering range)[Range Start Exact Match] 
3. 4-12 (Single Covering range)[Range End Exact Match] 
3. 4-8,8-12 (Two Adjacent ranges covering)[Range End Exact Match] 
3. 1-7,7-12 (Two adjacent ranges covering)[Range End Exact Match] 
4. 1-13 (Single Covering range)[No Ranges Start And End Exact Match] 

Любая помощь будет высоко оценена.

+0

Вы законно с использованием .NET 2.0 или это просто тег вы выбрали? Ответы могут варьироваться в зависимости от того, что –

+0

Также мне очень трудно понять логику, которую вы действительно ищете на основе вашего примера, и если бы вы могли опубликовать какой-то код, который вы пробовали, было бы полезно –

+0

Я использую .NET 2.0 – lidnuq

ответ

0

первым создать класс для Range

class Range{ 
    public int start; 
    public int end; 
    public Range(int start, int end){ 
     this.start=start; 
     this.end=end; 
    } 
    public string toString(){ 
     return start+"-"+end; 
    } 
} 

после создания таких, создать этот метод где-то.

public static void classifyRanges(Range sourceRange, Range[]ranges){ 
    foreach(Range range in ranges){ 
     if(range.start==sourceRange.start && range.end==range.end){ 
     Console.WriteLine("1."+range.toString()+" (Exact Match)"; 
     } 
    } 
    foreach(Range range in ranges){ 
     if(range.start!=sourceRange.start && range.end!=range.end){ 
     Console.WriteLine("4."+range.toString()+" (No Match)"; 
     } 
    } 
} 

вырабатывала другие, хотя