Решите проблему Башни Ханоя .
Ваше решение должно принять количество дисков в качестве первых параметров и три строки, используемые для идентификации каждого из трех стеков дисков, например towerOfHanoi(4, 'A', 'B', 'C')
. Функция должна возвращать массив массивов, содержащий список ходов, source -> destination. Например, массив [['A', 'C'], ['B', 'A']]
указывает, что 1-й ход состоял в том, чтобы переместить диск из стека A в C, а второй шаг состоял в том, чтобы переместить диск из стека B в A.
towerOfHanoi
is a function.
testString: assert(typeof towerOfHanoi === 'function');
- text: towerOfHanoi(3, ...)
should return 7 moves.
testString: assert(res3.length === 7);
- text: towerOfHanoi(3, 'A', 'B', 'C')
should return [['A','B'], ['A','C'], ['B','C'], ['A','B'], ['C','A'], ['C','B'], ['A','B']]
.
testString: assert.deepEqual(towerOfHanoi(3, 'A', 'B', 'C'), res3Moves);
- text: towerOfHanoi(5, "X", "Y", "Z")
10th move should be Y -> X.
testString: assert.deepEqual(res5[9], ['Y', 'X']);
- text: towerOfHanoi(7, 'A', 'B', 'C')
first ten moves are [['A','B'], ['A','C'], ['B','C'], ['A','B'], ['C','A'], ['C','B'], ['A','B'], ['A','C'], ['B','C'], ['B','A']]
testString: assert.deepEqual(towerOfHanoi(7, 'A', 'B', 'C').slice(0, 10), res7First10Moves);
```