이 과제의 목적은 1 차원 조각 모음이 타일링되어 유한 연속 청크를 형성 할 수 있는지 여부를 결정하는 것입니다.
조각은 0과 1의 비어 있지 않은, 유한 순서 인 하나 시작 및 종료가. 몇 가지 가능한 조각이 1
, 101
, 1111
, 1100101
.
타일링 은 하나의 인접한 블록이 형성되도록 피스를 배열하는 것을 의미한다. 한 조각에서 하나는 다른 조각에서 0이 아닌 0의 자리를 차지할 수 있습니다.
동등하게, 우리가 하나를 "고체 재료"로 간주하고 0을 "구멍"으로 간주한다면, 조각들은 구멍을 남기지 않고 단일 스트레치를 형성하도록 맞아야한다.
타일링을 형성하기 위해 조각 만 할 수 있습니다 이동 자신의 1 차원을 따라. (분할하거나 반영 할 수 없습니다). 각 조각은 정확히 한 번 사용됩니다.
예
세 조각을 101
, 11
, 101
각 부분이 원하는 시프트 표현 다음에 도시 된 바와 같이 바둑판 될 수있다 :
101
11
101
얻은 타일은
111111
두 번째 예로서, 작품 11011
과는 1001101
바둑판 수 없다. 특히, 교대
11011
1001101
충돌하는 두 가지가 있기 때문에 유효하지 않습니다. 과
11011
1001101
결과에 0이 포함되므로 유효하지 않습니다.
추가 규칙
입력은 하나 이상의 피스들의 집합이다. 합리적인 형식이 허용됩니다. 예를 들면 다음과 같습니다.
- 각 문자열이 서로 다른 두 개의 일관된 문자를 포함 할 수있는 문자열 목록.
- 각 배열은 한 조각에 대한 위치를 포함하는 여러 배열입니다.
- 각 숫자의 이진 표현과 같은 (홀수) 정수 목록은 조각을 정의합니다.
출력 타일링이 가능하고 falsy 값 그렇지 않으면 truthy 값이어야한다. 출력 값이 일치 할 필요는 없습니다. 즉, 입력에 따라 다를 수 있습니다.
모든 프로그래밍 언어의 프로그램 또는 기능 이 허용 됩니다 . 표준 허점 은 금지되어 있습니다.
바이트 단위의 최단 코드가 이깁니다.
테스트 사례
각 입력은 다른 라인에 있습니다
Truthy
1
111
1, 1
11, 111, 1111
101, 11, 1
101, 11, 101
10001, 11001, 10001
100001, 1001, 1011
10010001, 1001, 1001, 101
10110101, 11001, 100001, 1
110111, 100001, 11, 101
1001101, 110111, 1, 11, 1
거짓
101
101, 11
1, 1001
1011, 1011
11011, 1001101
1001, 11011, 1000001
1001, 11011, 1000001, 10101
101101
유한 한 숫자가 연속 블록을 생성하지 않더라도 진실한 것입니다.