2011-11-03 67 views
0

這個問題是關於這個話題: Vb.net all combinationsvb.net組合不同

問題: 我用我的應用程序的代碼,但我有一個問題。 機會存在,我有很多項目必須結合。

但我只想顯示前10個組合/結果。

我想要的是文本是完全獨一無二的。

所以我在這個問題開始時看到的話題中的例子就是猿牛的例子。 這裏沒關係。

但如果我有這樣的事情:

  • 1 | 2 | 3 | 4 | 5
  • 6 | 7 | 8 | 9
  • 3 | 2 | 1
  • 0 | 9 | 8 | 7 | 6 | 5

(有時它甚至更大)

第一10分的結果是:

  • 1-6-3-0
  • 1-6-3-9
  • 1-6-3-8
  • 1-6-3-7
  • 1-6- 3-6
  • 1-6-3-5
  • 1-6-2-0
  • 1-6-2-9
  • 1-6-2-8
  • 1 -6-2-7

但它們幾乎相同。

我希望第一個10個結果是這樣的,那麼:

  • 1-8-1-6
  • 3-6-1-5
  • 4-8-3-0
  • etc ...

這可能嗎?

回答

3

這裏是我的解決方案,我從C#轉換使用http://www.developerfusion.com/tools/convert/csharp-to-vb/

Dim numbers = New Integer()() { _ 
    New Integer() {1, 2, 3, 4, 5}, _ 
    New Integer() {6, 7, 8, 9}, _ 
    New Integer() {3, 2, 1}, _ 
    New Integer() {0, 9, 8, 7, 6, 5} _ 
} 
Dim random = New Random() 
Dim codes = New HashSet(Of String)() 
Dim newCode As String 

For resultNr As Integer = 0 To 9 
    ' Try to generate random codes until a non exisiting one is found. 
    Do 
     Dim sb = New StringBuilder() 
     For i As Integer = 0 To 3 
      Dim r As Integer = random.[Next](numbers(i).Length) 
      sb.Append(numbers(i)(r)).Append("-") 
     Next 
     sb.Length -= 1 
     newCode = sb.ToString() 
    Loop While codes.Contains(newCode) 
    codes.Add(newCode) 
    Console.WriteLine(newCode) 
Next 
Console.ReadKey()