vb.net组合不同

时间:2011-11-03 15:37:15

标签: vb.net combinations

这个问题是关于这个话题的: Vb.net all combinations

问题: 我将此代码用于我的应用程序,但我遇到了问题。 我有很多东西需要合并。

但我只想展示前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
  • 等...

这可能吗?

1 个答案:

答案 0 :(得分:3)

以下是我使用http://www.developerfusion.com/tools/convert/csharp-to-vb/从c#转换的解决方案:

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()