2011-11-03 4 views
0

Cette question est sur ce sujet: Vb.net all combinationscombinaisons de vb.net différentes

Question: Je utiliser ce code pour mon application mais j'ai un problème. La chance existe que j'ai beaucoup d'articles qui doit être combiné. Mais je veux juste montrer les 10 premiers résultats/combinaisons.

Ce que je veux, c'est que le texte soit complètement unique.

donc l'exemple de mon sujet que vous voyez au début de cette question, il y a un exemple de cerf de chevreuil. Ce n'est pas grave ici.

mais si je suis quelque chose comme ceci:

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

(parfois, il est encore plus)

les 10 premiers résultats sont les suivants:

  • 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

mais ils sont presque identiques.

Je veux que les 10 premiers résultats à être quelque chose comme ça alors:

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

Est-ce possible ??

Répondre

3

Voici ma solution que je me suis converti de C# en utilisant 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() 
Questions connexes