만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

그림 퍼즐

시간 제한1초메모리 제한128 MB

요약
아홉 개의 정사각형 조각을 3x3 격자에 배치하고 회전해, 맞닿은 변끼리 같은 그림의 왼쪽 반쪽과 오른쪽 반쪽이 되도록 하는 배치의 수를 센다.
난이도

보통10점 중 7점

유형
백트래킹, 완전 탐색, 구현, 재귀
정답자
아직 제출이 없습니다

문제

이 그림 퍼즐은 정사각형 조각 9개로 이루어진다. 각 조각의 네 변에는 그림의 절반이 하나씩 그려져 있다.

그림은 B, C, K, P 네 종류가 있다. 각 그림은 한가운데에서 왼쪽 절반과 오른쪽 절반으로 잘리므로, 한 변에 적히는 표시는 BL, BR, CL, CR, KL, KR, PL, PR 여덟 가지 중 하나이다. 여기서 XL은 그림 X의 왼쪽 절반, XR은 오른쪽 절반을 뜻한다. 같은 그림의 왼쪽 절반과 오른쪽 절반은 서로 맞물린다.

  • BL은 BR와 맞는다
  • CL은 CR와 맞는다
  • KL은 KR와 맞는다
  • PL은 PR와 맞는다

목표는 아홉 조각을 3×3 격자에 놓아, 서로 맞닿은 모든 조각 쌍에서 맞닿는 두 변이 맞물리게 하는 것이다. 즉 맞닿는 두 변은 한 그림의 두 절반(같은 문자에 한쪽은 L, 다른 한쪽은 R)이어야 한다. 조각은 놓기 전에 0°, 90°, 180°, 270°만큼 회전할 수 있다. 조각을 회전하면 네 변의 표시가 조각을 따라 순환하며 이동할 뿐, L 절반이 R 절반으로 바뀌거나 문자가 바뀌지는 않는다.

예시 퍼즐

예시 퍼즐.

올바른 배치의 예

조각을 맞춘 올바른 배치의 한 예.

입력

입력은 여러 개의 퍼즐로 이루어진다. 각 퍼즐은 퍼즐 번호가 한 줄에 하나씩 주어지며 시작한다. 퍼즐 번호가 0이면 입력의 끝을 뜻하며, 이는 퍼즐이 아니다.

퍼즐 번호 줄 다음에는 조각을 설명하는 아홉 줄이 온다. 각 줄에는 조각 번호(1부터 9까지)에 이어, 그 조각의 위, 오른쪽, 아래, 왼쪽 변에 적힌 표시가 이 순서대로 공백으로 구분되어 주어진다. 각 표시는 BL, BR, CL, CR, KL, KR, PL, PR 중 하나이다.

출력

각 퍼즐마다 한 줄을 출력한다. 퍼즐 번호, 콜론, 공백, 그리고 올바른 배치의 개수를 차례로 적는다.

올바른 배치란 아홉 조각을 각각 정확히 한 번씩, 네 회전 중 하나를 골라 3×3 격자에 놓되 맞닿는 모든 변이 맞물리도록 한 것이다. 이러한 배치를 모두 센다. 어떤 배치가 다른 배치를 격자 전체째로 회전한 것이더라도 서로 다른 배치로 따로 센다. 퍼즐을 풀 수 없으면 개수는 0이다.

예제3

  1. 예제 1

    입력
    1
    1 BR KR PL CR
    2 CL PR BL KR
    3 KR PR CR BL
    4 PL KR BL CL
    5 PL BR CL KR
    6 PR CL BR PL
    7 CR KL BL PR
    8 BL CR KL PL
    9 KL CL PR BL
    2
    1 PR PR BL CR
    2 BR KL CR PR
    3 CR BL PL KR
    4 KL PL BL CL
    5 BR CR PL KR
    6 KL BR PL CR
    7 CL PL BL KR
    8 KR KL CR BL
    9 CR KL PR BL
    3
    1 PL KL CL BR
    2 PL CR KL BL
    3 PR BR CL KR
    4 CR PL BR KR
    5 PR CL BR KR
    6 BL KL CR PR
    7 PL BL CL KR
    8 PR CR KL BR
    9 KL BL CL PL
    0
    
    예상 출력
    1: 8
    2: 0
    3: 32
    
  2. 예제 2

    입력
    1
    1 BR KR PL CR
    2 CL PR BL KR
    3 KR PR CR BL
    4 PL KR BL CL
    5 PL BR CL KR
    6 PR CL BR PL
    7 CR KL BL PR
    8 BL CR KL PL
    9 KL CL PR BL
    0
    
    예상 출력
    1: 8
    
  3. 예제 3

    입력
    3
    1 PL KL CL BR
    2 PL CR KL BL
    3 PR BR CL KR
    4 CR PL BR KR
    5 PR CL BR KR
    6 BL KL CR PR
    7 PL BL CL KR
    8 PR CR KL BR
    9 KL BL CL PL
    0
    
    예상 출력
    3: 32