2016-05-23 3 views
0

私のコードはランダムに与えられた文字列から順列を探し、いくつかの.txt辞書ファイル(配列に読み込まれます)を調べて、ランダムに与えられた文字でできる単語を見ます。しかし、私のコードは、それらを自分自身で並べ替えます。例えば、私が "ab"を置くと、これらの順列を "ab"と "ba"にする必要があります。それは "aa"、 "ab"、 "ba"、 "bb"のようになります。何か案は? (与えられたコードは長さ3までの単語のためである)なぜ私のコードで順列をチェックするのでしょうか?

If TextBox1.Text.Length > 1 Then 
     For Each c0 As Char In chars 
      For Each c1 As Char In chars 

       For i As Integer = 0 To Rank2.Length - 1 
        test = Rank2(i) 

        If InStr(Rank2(i), c0 & c1) Then 
         RankBox2.Items.Add(test) 
        End If 
       Next 

      Next 

      Next 

    End If 

    If TextBox1.Text.Length > 2 Then 
     For Each c0 As Char In chars 
      For Each c1 As Char In chars 
       For Each c2 As Char In chars 

        For i As Integer = 0 To Rank3.Length - 1 
         test = Rank3(i) 

         If InStr(Rank3(i), c0 & c1 & c2) Then 
          RankBox3.Items.Add(test) 
         End If 
        Next 
       Next 
      Next 
     Next 
    End If 
    If TextBox1.Text.Length > 3 Then 
     For Each c0 As Char In chars 
      For Each c1 As Char In chars 
       For Each c2 As Char In chars 
        For Each c3 As Char In chars 

         For i As Integer = 0 To Rank4.Length - 1 
          test = Rank4(i) 

          If InStr(Rank4(i), c0 & c1 & c2 & c3) Then 
           RankBox4.Items.Add(test) 
          End If 
         Next 
        Next 
       Next 
      Next 
     Next 
    End If 
+0

これはコード化されているためですか?何が起こっていないかを確認するためにコードをステップ実行します。 – Jeremy

答えて

1

目標は自分自身を繰り返し、文字の配置を除外している場合は、のために、ループ内のコードを処理する前にチェックを追加する必要があります。例えば

.. @RyanRoosとして

  If TextBox1.Text.Length > 1 Then 
       For Each c0 As Char In chars 
        For Each c1 As Char In chars 
         If c0 <> c1 Then 
          For i As Integer = 0 To Rank2.Length - 1 
           test = Rank2(i) 

           If InStr(Rank2(i), c0 & c1) Then 
            RankBox2.Items.Add(test) 
           End If 
          Next 
         End If 
        Next 
       Next 
      End If 
+0

はうまく動作しますが、ランダムな文字列に同じ文字が2つ以上含まれている場合は、その文字列を置換しません。しかし、とにかく巨大な助けの男に感謝:) – paulaxa1

1

同じ溶液が、索引を持ちます。したがって、比較はインデックスとの比較です。あなたはabを持っている場合

 Dim c0 As Char 
     Dim c1 As Char 
     If TextBox1.Text.Length > 1 Then 
      For i = 0 to chars.Length - 1 
       For j = 0 to chars.Length - 1 
        If i <> j Then 
         For k As Integer = 0 To Rank2.Length - 1 
          test = Rank2(k) 

          If InStr(Rank2(k), c0 & c1) Then 
           RankBox2.Items.Add(test) 
          End If 
         Next 
        End If 
       Next 
      Next 
     End If 

だから、それはあなたがabaをお持ちの場合は最初のposのaはと入れ替えてきたので、それは、aabababaaそれぞれ2回生成しますabba

が生成されます3位で

関連する問題