2017-09-24 3 views
0

を設定し、私は命令セットの非常に単純なモデルを持っていると言う:反復処理全ての可能性が

opcode 0, arg1[0-1] 
ocode 1, arg1[0-2], arg2[0-1] 

それでは、私が探しているが、それとの無限の複雑なプログラムを構築する方法です。

最初のプログラムである:

0,0 

next is, 
0,1 

then 
0,0 
1,0,0 

then 
0,0 
1,1,0 

etc 

によって定義された任意の命令セットが与えられると、そのようなこと:

class Instruction 
{ 
    public int opcode; 
    public int[] argLimits; //the maximum value of each argument, and number of arguments 
} 
Instruction[] allInstructions; 

前プログラム所与次のプログラムを生成することができます。 は、例えば: - オペコードは3つの引数を取る場合、それらはすべての必要とされるExecutableInstruction[] GetNextProgram(ExecutableInstruction[] previous, Instruction[] instructionSet);

引数の値の上限は常に[0-n]は 引数は、すべての必要とされるだろう。

引数の数が固定されているときにこのようなことを行う方法はわかっていますが、各オペコードにはN個の引数があり、各オペコードの各引数は0〜nの値を取ることができます。開始。

答えて

3

は例えば、可能なすべての引数の値と一緒にあなたの指示を列挙:

A: 0,0 
B: 0,1 
C: 1,0,0 
D: 1,0,1 
E: 1,0,2 
F: 1,1,0 
G: 1,1,1 
H: 1,1,2 
I: 1,2,0 
J: 1,2,1 
K: 1,2,2 

を今すぐ任意のプログラムがA-Kアルファベットの上に任意のワードです。私はあなたがどのように続けるかを知っていればいいと思う