하노이 타워가 무엇인지 모르는 경우 간단히 설명하겠습니다. 막대 3 개와 디스크 크기가 각각 다릅니다. 처음에는 모든 디스크가 정렬 된 순서대로 첫 번째 타워에 있습니다. 가장 큰 디스크는 맨 아래에 있고 가장 작은 디스크는 맨 위에 있습니다. 목표는 모든 디스크를 세 번째 막대로 가져 오는 것입니다. 쉽게 들리나요? 캐치가 있습니다. 다른 디스크보다 작은 디스크 위에 디스크를 놓을 수 없습니다. 한 번에 한 장의 디스크 만 잡고 다른 막대로 옮길 수 있으며 테이블이 아닌 막대에만 디스크를 놓을 수 있습니다.
ASCII 예제 솔루션 :
A B C
| | |
_|_ | |
__|__ | |
A B C
| | |
| | |
__|__ _|_ |
A B C
| | |
| | |
| _|_ __|__
A B C
| | |
| | _|_
| | __|__
도전
A, B, C라는 3 개의 막대가 있습니다.
하노이의 탑을위한 솔루션을 확인하는 것이 도전입니다. 다음을 확인해야합니다.
- 결국 모든 n 개의 디스크는로드 C (3)에 있습니다.
- 특정 상태의 특정 디스크에 대해서는 그 아래에 더 작은 디스크가 없습니다.
- 공 막대에서 디스크를 가져 오거나 디스크를 존재하지 않는 막대로 옮기는 것과 같은 명백한 오류는 없습니다.
솔루션이 최적 일 필요는 없습니다.
입력
프로그램은 두 가지 입력을받습니다 :
- 디스크 수 n (정수)
수행되는 동작은 다음과 같은 튜플 세트로 구성됩니다. 당신은 그들이 표현되는 방법을 선택할 수 있습니다. 예를 들어 위의 ASCII로 그린 n = 2에 대한 솔루션을 나타내는 다음과 같은 방법이 있습니다. (나는 눈에 편하기 때문에 테스트 케이스에서 첫 번째를 사용할 것이다) :
"A-> B; A-> C; B-> C"
[( "A", "B"), ( "A", "C"), ( "B", "C")]
[(1,2), (1,3), (2,3)]
"ABACBC"
[1,2,1,3,2,3]
산출
"도전"에서 찾을 수있는 조건이 유지되는 경우 진실입니다.
그렇지 않으면 거짓입니다.
테스트 사례 :
참된:
n=1, "A->C"
n=1, "A->B ; B->C"
n=2, "A->B ; A->C ; B->C"
n=2, "A->C ; C->B ; A->C ; B->C"
n=2, "A->C ; A->B ; C->B ; B->A ; B->C ; A->C"
n=3, "A->C ; A->B ; C->B ; A->C ; B->A ; B->C ; A->C"
n=4, "A->B ; A->C ; B->C ; A->B ; C->A ; C->B ; A->B ; A->C ; B->C ; B->A ; C->A ; B->C ; A->B ; A->C ; B->C"
그릇된:
@MartinEnder가 제안한 3 번째, @Joffan이 7 번째
n=1, "A->B"
n=1, "C->A"
n=2, "A->C ; A->B ; C->B ; A->C ; B->A ; B->C ; A->C"
n=2, "A->B ; A->C ; C->B"
n=2, "A->C ; A->B ; C->B ; B->A"
n=2, "A->C ; A->C"
n=3, "A->B ; A->D; A->C ; D->C ; A->C"
n=3, "A->C ; A->C ; A->B ; C->B ; A->C ; B->A ; B->C ; A->C"
n=3, "A->C ; A->B ; C->B ; A->B ; B->C ; B->A ; B->C ; A->C"
n=3, "A->C ; A->B ; C->B ; A->C ; B->A ; B->C ; C->B"
n=4, "A->B ; A->C ; B->C ; A->B ; C->A ; C->B ; A->B ; A->C ; B->C ; B->A ; C->A ; B->C ; A->B ; A->C"
n=4, "A->B ; A->B ; A->B ; A->C ; B->C ; B->C ; B->C"
이것은 코드 골프 , 가장 짧은 솔루션 승리입니다. 표준 규칙 및 허점이 적용됩니다. 배터리가 포함되어 있지 않습니다.
A->A
? 와 같은 움직임이 없을 것이라고 가정 할 수 있습니까 ?
moving discs to nonexistant rods.
물론 확인해야합니다 네, 그것은D
A=1
,B=2
,C=3
, 등)?