python 한 노 타 게임
문제 정의
바 이 두 바 이 코 는 한 노 타(하 네 타 라 고도 함)문 제 는 인도의 오래된 전설 에서 유래 한 퍼 즐 장난감 이 라 고 정의 했다.대 범 천 은 세 계 를 만 들 때 세 개의 금강석 기둥 을 만 들 었 고 한 기둥 위 에 아래 에서 위로 작은 것 부터 큰 것 까지 순서대로 64 개의 황금 원반 을 쌓 았 다 고 한다.대 범 천 은 브라만 에 게 그 중의 한 기둥 을 빌려 64 개의 황금 원반 을 세 번 째 기둥 위 에 다시 놓 으 라 고 명령 했다.또한 작은 황금 원반 에 확대 할 수 없 는 황금 원반 은 세 기둥 사이 에서 한 번 에 한 개의 원반 만 움 직 일 수 있 도록 규정 하고 있다.
예 를 들 어 황금 원반 이 3 개 밖 에 없 으 면 게임 규칙 을 만족 시 키 기 위해 다음 그림 과 같은 8 단계 에 따라 완성 해 야 한다.
코드 구현
# n y x z
def hanoi(n, x, y, z):
count = 0
if n == 1: #
print(x, ' --> ', z)
return 1
else:
# n - 1 z x y
count += hanoi(n - 1, x, z, y) #
# 1 x z
count += hanoi(1, x, y, z)
# n - 1 x y z
count += hanoi(n - 1, y, x, z) #
return count
def main():
hanoi_level = input(" :")
print(" %d" % hanoi(int(hanoi_level), 'X', 'Y', 'Z'))
if __name__ == '__main__':
main()
황금 원반 이 4 층 일 때 코드 의 출력 결 과 는 다음 과 같 습 니 다.
:4
X --> Y
X --> Z
Y --> Z
X --> Y
Z --> X
Z --> Y
X --> Y
X --> Z
Y --> Z
Y --> X
Z --> X
Y --> Z
X --> Y
X --> Z
Y --> Z
15
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.