0

バージョン管理された言語コードをあるバージョンから別のバージョンにマップするマッピング プログラムがあります。プログラムは、組み合わせコードを使用して、コードを正しくマッピングしますが、1 つの注意点があります。マッピング ファイルを解析し、ノードごとのオプションを使用して配列を構造化し、データが与えられた場合の可能性の数を計算するのに十分になりました。

次のデータを検討してください。

CodeA translates to: Array(1,1) = "CodeB|CodeC|CodeD|"
                     Array(1,2) = "CodeE|"
                     Array(1,3) = "CodeF|CodeG|"

これが意味することは、CodeA が次のように変換されることです。(CodeB or CodeC or CodeD) with codeE with (CodeF or CodeG)

コードは最初に可能性の数 (上記は 6) を計算し、次に結果の文字列に合わせて配列を暗くします。保存された文字列がマッピングのすべての組み合わせである必要があります。

CodeB with CodeE with CodeF
CodeB with CodeE with CodeG
CodeC with CodeE with CodeF
CodeC with CodeE with CodeG
CodeD with CodeE with CodeF
CodeD with CodeE with CodeG

コードは、複数のマッピングを持つすべての異なるサイズの配列で動作する必要があります。上記の例は単純ですが、次のようにさらに複雑になる可能性があります。

CodeA translates to: Array(1,1) = "CodeB|CodeC|CodeD|"
                     Array(1,2) = "CodeE|"
                     Array(1,3) = "CodeF|CodeG|"
                     Array(2,1) = "CodeH|"
                     Array(2,2) = "CodeI|CodeJ|"
                     Array(2,3) = "CodeK|CodeL|CodeM|CodeN|"
                     Array(2,4) = "CodeO|"
                     Array(3,1) = "CodeQ|"
                     Array(3,2) = "CodeR|CodeS|"

つまり、CodeA は次のように変換されます: ((CodeB or CodeC or CodeD) with CodeE with (CodeF or CodeG))or (CodeH with (CodeI or CodeJ) with (CodeK or CodeL or CodeM or CodeN) with CodeO)or (CodeQ with (CodeR or CodeS))--- 96 通りの組み合わせ

プログラムは最初の添え字の最大値を既に知っているため、コードは次のようになります。

for i = 1 to maxSubOne
    GET_COMBINATIONS(Array(i))
next i

助言がありますか?

4

1 に答える 1