바닥을 입력으로 출력하고 출력하거나 주어진 바닥 패턴을 만들 수있는 가장 간단한 메타 타일링 영역을 반환하는 프로그램 또는 함수를 작성해야합니다.
바닥은 사각형 격자의 일부입니다. 모든 정사각형 타일 (로 표현 중 하나 푸른 또는 검은 색 착색 a
및 b
입력에서).
예시 층 :
aaaa
ababab
aaaaa
메타 타일링
- 에서 구축
N
으로M
푸른 검은 사각형의 사각형 메타 타일 - 사용 된 메타 타일은 번역과 동일합니다 (회전하거나 미러링 할 수 없음)
- 두 개의 메타 타일의 측면이 연결되어 있으면 전체 길이를 따라 연결해야합니다 (즉, 메타 타일은 그리드와 같은 방식으로 공간을 타일링합니다)
메타 타일의 예 :
ba
aa
그리고 그것에 의해 만들어진 메타 타일링 :
.
.
.
babababa
aaaaaaaa
... babababa ...
aaaaaaaa
babababa
aaaaaaaa
.
.
.
이 메타 타일링은 왼쪽 글자가 보여 주듯이 상단 바닥을 만듭니다.
.
.
.
********
***aaaa*
... *ababab* ...
*aaaaa**
********
********
.
.
.
메타 타일의 면적이 더 작 으면 메타 타일링이 다른 타일보다 간단합니다. 우리 예제는 2*2 = 4
예제 플로어에서 가능한 가장 작은 영역을 가지고 있습니다. 따라서 출력은 4
예제입니다.
입력
- 문자열 문자로 구성
a b space
하고newline
적어도 하나의 포함a
또는b
. - 문자 (
ab
)는 하나의 4 연결 (병렬 연결) 모양을 형성합니다. - 행 앞에 불필요한 공간이 없습니다. 즉
a
또는로 시작하는 행이 하나 이상b
있습니다. 두 가지 입력 형식을 선택할 수 있습니다.
- 행 끝에 불필요한 공백이 없습니다 (예제 참조).
- 행의 오른쪽에 공백을 두어 모든 행을 가장 긴 행과 동일한 길이로 만듭니다.
후행 줄 바꿈은 선택 사항입니다.
산출
- 타일링에 입력 플로어가 포함 된 가장 작은 메타 타일의 영역 인 단일 정수입니다.
예
예는 대시로 구분됩니다. 예제의 세 부분은 입력, 출력 및 가능한 가장 작은 메타 타일 중 하나입니다.
a
1
a
-----------------
aaaa
aaa
a
1
a
-----------------
aabaab
abaa
aaba
6
aab
aba
-----------------
aabaab
a a a
aabab
18
aabaab
aaaaaa
aababa
-----------------
ba
aaab
8
baaa
aaab
-----------------
aaaa
ababb
aaaa
10
aaaaa
ababb
-----------------
a aa
ab ba
aba
6
aa
ab
ba
-----------------
aaaa
abab
aaaa
4
aa
ab
-----------------
ba
ba
b
4
ba
ab
-----------------
baa
aba
aab
9
baa
aba
aab
-----------------
aaaa
aabaa
aaaa
6
aaa
aab
이것은 코드 골프이므로 가장 짧은 참가작이 승리합니다.
@Ypnypn 모든 코너는 3 개의 다른 코너를 터치해야합니다 (타일링 가장자리의 메타 타일 제외). 나는 "두 개의 메타 타일의 측면이 연결되어 있으면 전체 길이를 따라 연결해야합니다"라고 말했습니다. 따라서 귀하의 예는 불법입니다.
—
randomra