0

ハノイの塔ゲーム用の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ですか?(そうすればはるかに簡単なゲームになりますが、それは意図されたものです)。

4

1 に答える 1

0

{Sum_of_peg_indices}-{Sum_of_pegs_selected}を使用できます。したがって、3の場合、(0 + 1 + 2)= 3 = {Sum_of_peg_indices}となり、言及した式が得られます。

于 2012-08-20T07:27:42.347 に答える