图片
최근에는 "Logic Painting"이라는 디지털 크로스 퍼즐을 플레이하고 있습니다. 표면적으로는 숫자의 행과 행을 기반으로 그리드를 칠할 뿐이지만 실제로는 효율적인 수치 제약 시스템을 숨깁니다. 하드코어 전략 플레이어로서 저는 기본 논리를 직접 분해하여 몇 가지 수치 규칙만 숙지하면 퍼즐 해결 속도가 두 배로 빨라질 수 있다는 사실을 발견했습니다.
먼저 핵심 수치 구조에 대해 이야기해 보겠습니다. 각 행과 열의 숫자는 연속된 검은색 격자의 길이를 나타내며 순서는 왼쪽에서 오른쪽 또는 위에서 아래입니다. 그리드 너비가 N이고 행의 숫자가 [a1, a2, ..., ak]라고 가정하면, 이 숫자가 차지하는 셀의 총 개수는 a1+a2+...+ak이고 숫자 사이에는 최소 1개의 공백이 필요하므로(전체 k-1) 전체 필요한 길이 = sum + (k-1)입니다. 이 값이 N보다 크다면 현재의 숫자 조합을 성립할 수 없어 바로 삭제된다는 뜻이다. 반대로 합계 + (k-1) = N이면 숫자 사이에 공백이 정확히 1개만 있을 수 있으며 모든 그리드가 강제로 결정되는데, 이것이 "완전 채우기" 상태입니다.
최적 전략의 첫 번째 단계: 합계 + (k-1) = N인 행이나 열을 먼저 스캔하면 해당하는 모든 그리드를 직접 채우고 빈 간격을 설정할 수 있습니다. 이를 통해 식별된 여러 셀을 신속하게 생성하고 교차 추론을 위한 기준점을 제공할 수 있습니다.
두 번째 단계는 "겹침 방법"을 사용하는 것입니다. 예를 들어 줄 길이가 10이고 숫자가 [7]인 것처럼 특정 숫자의 값이 큰 경우 7개의 연속 그리드의 가능한 시작 위치는 1~4입니다(끝은 10을 초과할 수 없기 때문입니다). 이 7개의 그리드 중에서 위치 4~7(즉, 시작 위치 1의 끝과 시작 위치 4의 시작 부분이 겹치는 부분)은 어떻게든 그려집니다. 계산 방법은 시작 위치 범위 = [1, N - a + 1], 겹치는 간격 = [max(1, 시작 최소값 + a - 1), min(N, 시작 최대값 + a - 1)]입니다. 핵심은 범위를 그리고 교차점을 찾는 것입니다. 먼저 그려야 하는 이러한 유형의 그리드를 그리는 것은 핵심 단서를 잠그는 것과 같습니다.
세 번째 단계는 수치 뺄셈입니다. 행이나 열이 부분적으로 결정되면 해결되지 않은 나머지 셀 수를 업데이트하고 나머지 숫자의 조합 공간을 다시 계산할 수 있습니다. 예를 들어, 라인에 이미 검정색 선이 1개 있고 숫자가 [2,1]인 경우 남은 공간을 다시 할당해야 하며 나머지 검정색 위치를 직접 유추할 수 있습니다.
실제 테스트 후, 이 수치 계산 과정에 따르면 20x20 퍼즐의 평균 해결 속도가 40% 이상 단축될 수 있으며, 이는 특히 "숫자 더미"가 조밀하게 있는 레벨에 적합합니다. 그런데 게임 속 숨겨진 그림이 생성하는 픽셀 아트는 매우 정교합니다. 그린 그림을 잘라서 아바타로 활용하기도 했는데 의외의 덤이였어요 😂