게임
최근에, 내 시간의 대부분은 Logic Dots 라 불리는 중독성있는 게임으로 인해 어려움을 겪었습니다. 게임 디스플레이를 보여 주면 규칙을 설명하는 것이 더 쉬우므로 해결되지 않은 퍼즐의 스크린 샷입니다.
이제 여기에 주목해야 할 세 가지 주요 사항이 있습니다.
- 게임 보드 (중앙에 4x4 격자 사각형)
- 모든 선 또는
a
1 개의 사각형으로 필요한 모양 (위에서 두 번째 막대의 점수 및 메뉴 등의 연결된 점) - 행과 열 위의 숫자 (해당 열에 몇 개의 점이 있어야하는지 나타냄)
게임의 목적은 필요한 모양을 그리드에 맞추는 것입니다. 도형을 회전 할 수는 있지만 대각선으로 이동할 수는 없습니다.
이 솔루션에서는 모든 도형이 한 번만 생성되며 (필요한 도형에만 한 번만 있기 때문에)이 경우에는 모두 수평이지만 수직 일 수도 있습니다. 사각형으로 채워진 분홍색은 사용되지 않은 사각형을 나타냅니다.
다음은 더 크고 약간 더 복잡한 그리드입니다.
해결되지 않은 퍼즐에는 이미 채워진 몇 개의 사각형이 있습니다. 회색 사각형은 점을 놓을 수없는 차단 된 사각형을 나타냅니다 . 꼬리를 가진 점 점 그 자리에 있음을 말해, 그것은으로 연결 이상 (반대 방향 포함) 다른 방향으로 꼬리의 방향으로 한 번 더 점,하지만.
표기법
이 게시물의 나머지 부분에서는 다음 기호를 사용하여 보드를 참조합니다.
- <,>, ^, v- 점의 방향으로 연장되는 꼬리가있는 미리 배치 된 점을 나타냅니다.
- *- 점을 나타냅니다. 해결되지 않은 그리드 (입력)에 제공된 경우 개별 모양입니다. 출력 상태이면 주변의 점에 연결됩니다.
- #- 차단 된 그리드 사각형을 나타냅니다 (점을 배치 할 수없는 위치)
- -, | (하이픈 및 막대)- 오른쪽 및 왼쪽 꼬리가있는 점과 각각 위쪽 및 아래쪽 꼬리가있는 점을 나타냅니다.
- ** (공백 문자)-** 빈 공간을 나타냅니다.
이러한 기호를 사용하여 후자의 사례 (미해결)는 다음과 같이 나타낼 수 있습니다.
<
#
^ #
솔루션은 다음과 같이 나타낼 수 있습니다.
*< * *
*
*
* *
* *#*
^ # *
두 개의 도형이 가로, 세로 또는 대각선 으로 닿을 수 없으므로 다음과 같은 경우에는 유효하지 않습니다.
***
**
**
도전
당신의 도전은 4x4에서 9x9까지 논리 도트 퍼즐을 해결하는 것입니다. 네 줄의 입력을받은 다음 게임 보드를 받게됩니다. 라인은 다음과 같습니다.
- 첫 번째 줄, 모양-찾을 모양으로, 각각 형태
sizexquantity
(예 :3x2
길이 3의 두 가지 모양)로 주어지고 공백으로 구분됩니다. 예제 라인 :3x1 2x1 1x1
- 두 번째 줄, 열-각 열에 필요한 점 수의 공백으로 구분 된 목록입니다. 예제 라인 :
1 1 2 2
- 세 번째 줄, 행-각 행에 필요한 도트 수의 공백으로 구분 된 목록입니다. 예제 라인 :
3 0 3 0
- 네 번째 줄, 보드 크기-단일 정수, 보드 크기,
B
그런 다음 보드가 제공되며 B
위에서 언급 한 표기법을 사용하여 보드를 나타내는 입력 라인입니다. 예를 들어, 후자의 경우에 대한 전체 입력은 다음과 같습니다.
4x1 3x1 2x2 1x2
1 4 0 3 0 5
4 1 1 2 3 2
6
<
#
^ #
그러면 프로그램은 해결 된 보드를 동일한 표기법으로 출력합니다. 위의 입력에 대한 일치 출력은 다음과 같습니다.
** * *
*
*
* *
* *#*
* # *
게임 보드에는 여러 가지 솔루션이있을 수 있습니다. 이 경우 하나의 유효한 솔루션 만 출력하십시오. 또한 프로그램은 복잡한 10x10 그리드에 적합한 합리적인 데스크톱 컴퓨터에서 10 초 이내에 올바른 솔루션을 출력해야합니다.
이것은 코드 골프이므로 최소 바이트가 이깁니다.
테스트 사례
입력 1
3x2 1x4
2 2 3 1 2
4 0 3 0 3
5
#
#
*
출력 1
*** *
***#
#
* * *
입력 2
3x1 1x6
2 0 4 0 3
3 1 2 1 2
5
*
#
출력 2
* * *
*
* *
* #
* *
입력 3
5x1 4x1 2x1 1x2
1 2 3 3 2 2
0 5 0 4 0 4
6
#
-
#
<
출력 3
#
*****
****
#
* ** *
t no two shapes can touch horizontally, vertically or diagonally
(이것은 시작 부분에 있어야합니다. 거의 끝까지 잃지 않았지만 어쨌든 ...)