길이 목록을 나타내는 패턴과 해당 길이를 나타내는 문자열이 있으면 일치합니까?
관심있는 사람들에게는 Nonogram 의 행이나 열 이 올바른지 확인하는 것과 동등한 질문 입니다. 그러나 나는 Nonograms와 관련된 모든 언어를 생략 하여이 퍼즐에 익숙하지 않은 사람들에게 질문을 덜 혼란스럽게 만듭니다.
입력
줄 바꿈으로 구분 된 두 줄의 데이터.
첫 번째 줄은 공백으로 구분 된 정수 목록입니다. 예 :
3 6 1 4 6
이 줄 은 정수 목록과 동일한 크기의 채워진 공간 패턴 을 알 수없는 빈 공간으로 구분되며 양의 길이는 두 번째 줄과 일치해야합니다. 일치하는 문자열의 시작과 끝에 빈 공간이있을 수도 있습니다.
두 번째 줄은 한 줄의 패턴과 일치하거나 일치하지 않는 줄입니다. 그것은 전적으로 구성
#
,x
및_
. 이 라인은되고 보장 될 적어도 긴만큼 첫 번째 줄에서 정수의 합이 플러스, 다른 정수의 수를 뺀 1, 및 이상이 될 수 있습니다. 따라서이 경우 두 번째 줄은(3+6+1+4+6) + (5) - 1
24 자 이상이어야 합니다. 첫 번째 라인의 패턴과 일치하는 24 자 라인 예제는 다음과 같습니다.###_######_#_####_######
기호의 의미 :
#
이것은 채워진 상자를 나타냅니다x
"비어 있음"으로 표시된 상자를 나타냅니다._
이것은 알려지지 않은 / 표시되지 않은 상자를 나타냅니다.
골
아이디어는 :
- 두 번째 줄이 첫 번째 줄의 패턴을 충족하는 유효한 행일 수 있는지 확인하십시오.
- (쓰기 아래의 예를이 당신에게 달려해야 할 선택이 방법 당신은 명백한 오류 메시지를 인쇄해야합니다
ERROR
미지의 공간이 하나로 작성 할 수없는 경우 그러나 그 5 자 일 필요는 없습니다)#
또는x
처음에 맞게 선.
- (쓰기 아래의 예를이 당신에게 달려해야 할 선택이 방법 당신은 명백한 오류 메시지를 인쇄해야합니다
- 공백으로 구분 된 행 에 완전히 배치 된 정수의 인덱스가없는 인덱스 를 인쇄하십시오 . 모호성이 있으면 색인을 인쇄 하지 마십시오 .
예 :
Input: | Output: | Reason:
--------------------------------------------------------------------------
3 6 1 4 6 | 0 1 2 3 4 | This is a complete string that
###x######x#x####x###### | | matches perfectly.
--------------------------------------------------------------------------
1 2 1 | 0 1 2 | There is no ambiguity which filled cells
#____xx___##__x_# | | correspond to which parts of the pattern.
--------------------------------------------------------------------------
1 2 1 | | I don't know whether the filled block is
____#___x | | part of the 1, 2, or 1, so output nothing.
--------------------------------------------------------------------------
1 2 1 | ERROR | The first unknown cell will create a block that
#_#x_# | | matches either 1 1 or 3, but not 1 2.
--------------------------------------------------------------------------
1 2 1 | 0 2 | Even though we know where all the filled cells
#____# | | must be, only 0 and 2 are actually filled here.
--------------------------------------------------------------------------
1 1 1 1 | | There are so many possible ways to do fill this,
__#_______#____ | | we don't know which indices are actually matched.
--------------------------------------------------------------------------
4 4 | | Again, we don't know WHICH 4 is matched here,
______x####________ | | so output nothing.
--------------------------------------------------------------------------
4 4 | 0 | However, here, there's no room for a previous 4,
__x####________ | | so the displayed 4 must be index 0.
--------------------------------------------------------------------------
3 | ERROR | We can't fit a 3 into a space before or after
__x__ | | the x, so this is impossible to match.
--------------------------------------------------------------------------
5 1 3 | 0 | While we can match the 5, we don't know whether
x#####x____#____ | | the single block matches the 1 or the 3.
--------------------------------------------------------------------------
3 2 3 | 1 | The two has been completely placed,
____##x##____ | | even though we don't know which it is.
규칙 :
입력을 개행으로 구분 된 문자열 또는 STDIN (또는 가장 가까운 대안)으로 수신하고 출력을 공백으로 구분 된 문자열로 리턴하거나 STDOUT (또는 가장 가까운 대안)으로 인쇄 하는 프로그램 또는 함수를 작성할 수 있습니다 . 선택적으로 출력에 단일 후행 줄 바꿈을 포함시킬 수 있습니다.
또한 더 이상 재미 있지 않은 표준 허점 은 금지 됩니다.