ハノイの塔ゲーム用の3つのペグのセットがあります。
int[][] pegs = new int[N_PEGS][N_DISCS];
したがって、ペグ1はpegs[0]
、ペグ2は、ペグ3はpegs[1]
ですpegs[2]
。
2つのペグの位置を考えると、もう1id
つのペグの位置を取得する必要があります。id
if (startFromPeg == 0 && endAtPeg == 1) {
useAsTempPeg = 2;
}
言い換えると、集合S = {0、1、2}のうち、パラメーター{s1、s2}を考慮した後に要素を残しておく必要があります。
3つのペグのセットの場合、間違っていない限り、簡単な計算でこれを行うことができます。
useAsTempPeg = N_PEGS - startFromPeg - endAtPeg;
これは常に正しい結果をもたらすようです:
3 - 0 - 1 = 2 (ok)
3 - 0 - 2 = 1 (ok)
3 - 1 - 2 = 0 (ok)
この式を一般化してゲームをプレイするにはどうすればよいN_PEGS > 3
ですか?(そうすればはるかに簡単なゲームになりますが、それは意図されたものです)。