아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

멱등 필터

시간 제한8초메모리 제한512 MB

요약
128비트 룩업 테이블로 주어진 육각 격자 필터가 멱등인지, 즉 두 번 적용한 결과가 한 번 적용한 결과와 항상 같은지 판정한다.
난이도

보통10점 중 4점

유형
시뮬레이션, 완전 탐색, 비트 연산, 구현
정답자
아직 제출이 없습니다

문제

검은색이나 흰색으로 칠해진 육각형 픽셀로 이루어진 흑백 이미지를 생각하자. 픽셀이 육각형이므로 모든 픽셀에는 변을 맞대고 있는 이웃 픽셀이 정확히 여섯 개 있다.

필터링은 픽셀 자신과 이웃 여섯 개의 색으로 그 픽셀의 새 색을 정하는 연산이다. 필터의 예를 세 개 든다.

첫 번째 필터는 이웃 여섯 개가 모두 흰색이면 픽셀을 흰색으로 칠하고, 그렇지 않으면 색을 그대로 둔다.

이웃이 모두 흰색일 때 흰색으로 칠하는 필터

모든 픽셀에 이 연산을 동시에 적용하면 고립된 검은 픽셀을 없애는 잡음 제거가 된다.

두 번째 필터는 이웃 여섯 개가 모두 검은색이면 픽셀을 흰색으로 칠하고, 그렇지 않으면 색을 그대로 둔다.

이웃이 모두 검은색일 때 흰색으로 칠하는 필터

모든 픽셀에 동시에 적용하면 칠해진 영역의 경계만 남기는 윤곽선 검출이 된다.

세 번째 필터는 다른 이웃을 모두 무시하고 바로 아래 픽셀의 색을 그대로 가져온다.

바로 아래 픽셀의 색을 가져오는 필터

모든 픽셀에 동시에 적용하면 이미지 전체가 한 픽셀 위로 올라간다.

잡음 제거나 윤곽선 검출은 어떤 이미지에 두 번 적용해도 결과가 한 번 적용한 것과 완전히 같다. 이런 필터를 멱등이라고 한다. 이동 필터는 적용할 때마다 이미지가 한 픽셀씩 더 올라가므로 멱등이 아니다.

이미지는 육각 격자 전체에 펼쳐져 있다. 유한한 픽셀 묶음에 색을 어떻게 배치하든 그 배치가 실제로 나타나는 이미지가 있다.

주어진 필터가 멱등인지 판정하라.

입력

입력은 여러 개의 데이터셋으로 이루어지고, 데이터셋의 개수는 100개 미만이다. 각 데이터셋은 필터 하나를 나타내는 128자 문자열이며 한 줄에 공백 없이 주어진다.

c0c1⋯c127c_0c_1\cdots c_{127}

cic_i는 '0'(검은색) 또는 '1'(흰색)이고, 픽셀 자신과 이웃 여섯 개의 색을 이진수로 나타낸 값이 ii일 때 필터가 내보내는 색이다. 비트는 중심 픽셀 주위에 다음과 같이 붙는다.

비트 번호 배치

비트 3은 필터를 적용하는 중심 픽셀, 비트 6은 그 위 픽셀, 비트 0은 아래 픽셀, 비트 5는 왼쪽 위, 비트 4는 오른쪽 위, 비트 2는 왼쪽 아래, 비트 1은 오른쪽 아래 이웃이다. 값 ii는 i=∑j=06bitj×2ji=\sum_{j=0}^{6}\mathrm{bit}_j\times 2^j로 정하며, bitj\mathrm{bit}_j는 해당 픽셀이 검은색이면 0, 흰색이면 1이다.

입력의 마지막 줄에는 '#' 한 글자만 있다.

출력

각 데이터셋마다 필터가 멱등이면 yes를, 아니면 no를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    00000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000111111111
    10000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111
    01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
    #
    
    예상 출력
    yes
    yes
    no
    
  2. 예제 2

    입력
    00000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000111111111
    10000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111
    01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
    00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111
    #
    
    예상 출력
    yes
    yes
    no
    no