2010-06-07 4 views
1

16 개 요소의 시퀀스가 ​​있습니다 : 1,2,3, ..., 16 (또는 2 * n 요소). 시퀀스 요소는 항상 1에서 길이 (시퀀스)로 이동하며 4 요소의 시퀀스는 1,2,3,4입니다.시퀀스 요소를 쌍으로 나눕니다.

편집 : 첫 번째 시퀀스 요소는 항상 1, 두 번째 시퀀스 요소 = 2, 세 번째 시퀀스 요소 = 3 등입니다. 게임 "페어 그림 찾기"입니다.

요소를 쌍으로 나누는 알고리즘을 작성하고 싶습니다. 예를 들어, 1-15 2-16 3-13 4-9 5-14 6-10 7-11 8-12

PS : 제발 LINQ 없음 : VS2005

편집 : 볼 수 있듯이 내 질문이 너무 간단하여 아무도 답변을 할 수 없으므로 :) 아니면 모두가 무서워할까요?

+5

나에게 숙제 냄새 –

+0

지금까지 작성한 코드를 게시하시기 바랍니다. 사람들은 일반적으로 코드를 작성하는 것을 좋아하지 않습니다. –

+0

[알고리즘]이 제거되었습니다. [초급] 추가됨. –

답변

0

어떨까요?

class Program 
{ 
    static void Main(string[] args) 
    { 
     int size = 8; 

     List<int> tmpList = new List<int>(); 

     for (int i = size; i <= size * 2; i++) 
     { 
      tmpList.Add(i); 
     } 

     List<Pair> result = new List<Pair>(); 

     Random r = new Random(); 

     for (int i = 1; i <= size; i++) 
     { 
      Pair pair = new Pair() { a = i, b = PopRandom(r, tmpList) }; 
      result.Add(pair); 
     } 

     foreach (Pair p in result) 
     { 
      Console.WriteLine("{0} - {1}", p.a, p.b); 
     } 
    } 

    static private int PopRandom(Random r, List<int> list) 
    { 
     int i = r.Next(0, list.Count); 
     int result = list[i]; 

     list.RemoveAt(i); 

     return result; 
    } 

    struct Pair 
    { 
     public int a; 
     public int b; 
    } 
} 

UPD :이 닷넷 2.0 대상 플랫폼에 성공적으로 컴파일 된 UPD 2 : 임의의 인스턴스가 단지 다른 모든 일을, 선택 기준없이 PopRandom()

+0

아니 linq, 제발 ... 난 enumerable 및 vars가 없습니다 ... –

+0

지금은. NET 2.0에 대한 컴파일 – zerkms

+0

페어 쌍 = 새 쌍() {a = i, b = PopRandom (tmpList)}}; 그 라인도 .net 2.0 용으로 컴파일됩니까? http://img709.imageshack.us/img709/1714/tmpdl.png - 1-8 및 8-15 쌍이 잘못되었습니다 ... –

0

에서 밖으로 이동했다. ....

var result = new List<Tuple<int,int>>(); 

for (int i = 1; i < size; i+=2) 
{ 
    var pair = new Tuple.Create(i,i+1); 
    result.Add(pair); 
}