комбинации vb.net разные - PullRequest
       12

комбинации vb.net разные

0 голосов
/ 03 ноября 2011

Этот вопрос касается данной темы: Vb.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
  • и т.д ...

Возможно ли это?

1 Ответ

3 голосов
/ 03 ноября 2011

Вот мое решение, которое я преобразовал из 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()
...