#include <stdio.h>
void moveOneDisk(int from, int to) {
printf("杭%dから杭%dに移動\n", from
, to
); }
void moveDisks(int from, int to, int n) {
int anotherPole = 6 - (from + to);
if (n == 1) {
moveOneDisk(from, to);
} else {
moveDisks(from, anotherPole, n - 1);
moveOneDisk(from, to);
moveDisks(anotherPole, to, n - 1);
}
}
int main(void) {
int n = 5;
printf("%d枚の円盤を杭1から杭3に移動させる手順は以下のとおり:\n", n
); moveDisks(1, 3, n);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIG1vdmVPbmVEaXNrKGludCBmcm9tLCBpbnQgdG8pIHsKICAgIHByaW50Zigi5p2tJWTjgYvjgonmna0lZOOBq+enu+WLlVxuIiwgZnJvbSwgdG8pOwp9Cgp2b2lkIG1vdmVEaXNrcyhpbnQgZnJvbSwgaW50IHRvLCBpbnQgbikgewogICAgaW50IGFub3RoZXJQb2xlID0gNiAtIChmcm9tICsgdG8pOwoKICAgIGlmIChuID09IDEpIHsKICAgICAgICBtb3ZlT25lRGlzayhmcm9tLCB0byk7CiAgICB9IGVsc2UgewogICAgICAgIG1vdmVEaXNrcyhmcm9tLCBhbm90aGVyUG9sZSwgbiAtIDEpOyAKICAgICAgICBtb3ZlT25lRGlzayhmcm9tLCB0byk7IAogICAgICAgIG1vdmVEaXNrcyhhbm90aGVyUG9sZSwgdG8sIG4gLSAxKTsgCiAgICB9Cn0KCmludCBtYWluKHZvaWQpIHsKICAgIGludCBuID0gNTsKICAgIHByaW50ZigiJWTmnprjga7lhobnm6TjgpLmna0x44GL44KJ5p2tM+OBq+enu+WLleOBleOBm+OCi+aJi+mghuOBr+S7peS4i+OBruOBqOOBiuOCiu+8mlxuIiwgbik7CiAgICBtb3ZlRGlza3MoMSwgMywgbik7CiAgICByZXR1cm4gMDsKfQo=