2016-03-14 114 views
-2

我想以某種方式「洗牌」Tuple<bool,int[]>[]但我不需要準確地洗牌我想切換第一個位置與第二個位置相比切換第一個位置第三個是第一個應該與其他所有元組交換位置,而第二個應該這樣做。我會嘗試一些簡單的數字來解釋它像中了彩票:Tuple切換Tuple數組中的位置

我們已經1,2,3讓我們假設這些都是我的3元組現在:

  • 首先我們切換1與2,我們得到2,1,3;
  • 第二我們切換1與3,我們得到2,3,1;
  • 我們再次將2與1切換,得到1,3,2;
  • 我們再次用3切換1,得到3,1,2;
  • 最後我們切換1和2,我們得到3,2,1;

這就是我想要實現我的元組:

Tuple<bool, int[]>[] hodove = 
     { 
      new Tuple<bool, int[]>(Nadqsno(red, 1) && Napred(kolona, 2), new[] 
      { 
       count++, 
       novMinatRed = red + 1, 
       novaMinataKolona = kolona + 2 
      }), 
      new Tuple<bool, int[]>(Nadqsno(red, 2) && Napred(kolona, 1), new[] 
      { 
       count++, 
       novMinatRed = red + 2, 
       novaMinataKolona = kolona + 1 
      }), 
      new Tuple<bool, int[]>(Nalqvo(red, 1) && Napred(kolona, 2), new[] 
      { 
       count++, 
       novMinatRed = red - 1, 
       novaMinataKolona = kolona + 2 
      }), 
      new Tuple<bool, int[]>(Nalqvo(red, 2) && Napred(kolona, 1), new[] 
      { 
       count++, 
       novMinatRed = red - 2, 
       novaMinataKolona = kolona + 1 
      }), 
      new Tuple<bool, int[]>(Nadqsno(red, 2) && Nazad(kolona, 1), new[] 
      { 
       count++, 
       novMinatRed = red + 2, 
       novaMinataKolona = kolona - 1 
      }), 
      new Tuple<bool, int[]>(Nalqvo(red, 2) && Nazad(kolona, 1), new[] 
      { 
       count++, 
       novMinatRed = red - 2, 
       novaMinataKolona = kolona - 1 
      }), 
      new Tuple<bool, int[]>(Nadqsno(red, 1) && Nazad(kolona, 2), new[] 
      { 
       count++, 
       novMinatRed = red + 1, 
       novaMinataKolona = kolona - 2 
      }), 
      new Tuple<bool, int[]>(Nalqvo(red, 1) && Nazad(kolona, 2), new[] 
      { 
       count++, 
       novMinatRed = red - 1, 
       novaMinataKolona = kolona - 2 
      }), 
     }; 
+0

你最終想要顛倒數組。那麼爲什麼不簡單地顛倒陣列呢?你已經在C#中有'Array.Reverse'函數。所以它只是一個行代碼。或者我錯過了什麼? –

+0

反過來如何幫助?它只是將數組向後排序。我現在看到它,我可能不夠清楚,當我看它時,它實際上很雜亂。對不起,我不想只是擁有它3,2,1它可能已經結束像2,3,1我只是想數組中的每一個元組都可以與其他所有元組進行切換 – KOPEUE

+0

所以你想使它成爲隨機序列? –

回答

0

如果你想要的是一個字符串的所有排列,你可以使用一個交換算法,像一個發現here

而不是你使用元組數組的字符串

0

你想通過逐步交換數組中的元素來枚舉所有的排列嗎?像Heap's algorithm

+0

這將是更好的評論,因爲它是一個澄清的問題。它在技術上回答了他的問題,因爲你提出了Heap的算法,但是我會說在評論中提出第一個問題,如果他說這是他正在尋找的內容,那麼將一個完整答案放在一起,而不是使用Heap算法的模糊建議。 –

+0

@ kevin-wells,我同意,但StackOverflow規則不允許我發表評論。 –

+0

在這種情況下,我會建議重寫你的答案是一個完整的答案,假設堆的算法是他正在尋找的,如果它不是,那麼你可以稍後編輯它。評論的限制不應該通過寫評論來回避 –