2011-11-03 63 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()