당신은 접시 위에 팬케이크 를 쌓아 놓고 시럽이 굵어 져서 옆으로 내려갈 수 없습니다. 각 팬케이크의 양쪽 얼굴이 시럽에 적어도 닿을 때까지는 기뻐하지 않지만, 지금은 상단 팬케이크의 한 면만 먹습니다.
시럽은 한 번의 팬케이크까지 담그지 않지만 두 팬케이크 사이의 대면 접촉을 통해 무기한으로 옮길 수 있습니다. 팬케이크의 얼굴이 시럽에 닿으면 시럽으로 영원히 코팅 된 것으로 간주되며 시럽으로 코팅 된 비 시럽으로 코팅 된 얼굴을 만듭니다. 시럽을 플레이트의 상면으로 또는 플레이트의 상측으로 이송 할 수도 있습니다.
팬케이크 정렬 에서와 같이 하나 이상의 팬케이크 아래에 주걱을 삽입하고 뒤집어 모든 팬케이크 얼굴을 시럽으로 코팅 합니다 . (안타깝게도이 주걱은 시럽에 강하며 팬케이크 얼굴을 만져서 시럽을 분배하는 데 도움이되지 않습니다.) 슬프게도 어떤 팬케이크 얼굴이 시럽에 닿았는지 추적하지 못하지만 뒤집힌 부분은 기억합니다.
과거에 뒤집힌 음식이 있다면 팬케이크가 모두 시럽으로 코팅되어 있는지 확인할 수 있습니까?
도전
팬케이크의 수는 양의 정수 N, 지금까지 뒤집은 양수의 정수 목록 (모두 <= N)을 사용하는 프로그램을 작성하십시오. 목록의 각 숫자는 뒤집힌 팬케이크 수를 나타냅니다. 팬케이크 코팅이 완료되면 참 값을, 그렇지 않으면 거짓 값을 출력합니다. ( 진실 / 거짓 정의 )
입력은 stdin 또는 명령 행에서 가져와야하며 출력은 stdout (또는 가장 가까운 대안)으로 이동해야합니다. 입력에 약간의 추가 형식이 필요한 경우가 [1, 1, 2, 2]
좋습니다 ( 예 : 1 1 2 2
목록 대신) .
예
N = 2라고 가정하면 시럽이 맨 위에서 시작하여 접시에 두 개의 팬케이크가 쌓입니다.
목록이 1 1 2 2
이면, 이는 우리가 ...
- 상단 팬케이크 뒤집기-하단 팬케이크의 윗면 코팅
- 상단을 다시 뒤집습니다-상단 팬케이크의 원래 바닥면을 코팅
- 둘 다 뒤집어-판을 코팅
- 다시 뒤집어-바닥 팬케이크의 원래 바닥면 코팅
네 얼굴이 코팅되어 있기 때문에 출력은 같은 것 True
또는 1
.
목록이 1 2 2 1
이면, 이는 우리가 ...
- 상단 팬케이크 뒤집기-하단 팬케이크의 윗면 코팅
- 둘 다 뒤집기-코팅 없음
- 다시 뒤집기-아무것도 코팅하지 않음
- 상단을 다시 뒤집습니다-상단 팬케이크의 원래 바닥면을 코팅
플레이트에 닿는면에 여전히 시럽이 없기 때문에 출력은 False
또는 과 같습니다 0
.
노트
- 플립리스트는 임의로 클 수 있으며 비어있을 수 있으며,이 경우 출력이 잘못됩니다.
- 플레이트는 시럽 운반체 역할을하지만 코팅 여부는 중요하지 않습니다. (실제로 접는 팬케이크면을 코팅해야하지만 어떤 식 으로든 플립 솔루션 이 플레이트를 코팅합니다.)
- 플레이트를 뒤집을 수 없습니다.
- 이 팬케이크는 말할면이없고 두 개의 반대 면만 있는 장치 디스크 라고 가정 할 수 있습니다 .
채점
Put syrup on the pancakes!
.;)