요즘 할머니는 바이너리 퍼즐 풀이에 푹 빠져 있어요. 실력이 점점 늘고 있긴 하지만, 그래도 꽤 자주 막히곤 하죠. 다정한 손주답게, 어떤 바이너리 퍼즐이든 풀어 주는 작은 애플리케이션을 만들어 보기로 해요. 그러면 할머니께 다음 수에 대한 힌트를 드릴 수 있거든요.
이번 과제는 이진 퍼즐을 푸는 거예요. 모든 이진 퍼즐에는 해답이 정확히 _하나_뿐이고, 그 해답은 다음 규칙들을 적용해서 찾을 수 있어요:
아직 완성되지 않은 퍼즐이 0과 1로 이루어진 행들의 형태로 주어지고, 아직 모르는 값은 자리 표시자(_)로 표시되어 있어요.
목표는 이진 퍼즐의 규칙을 정의하는 거예요. 그러면 테스트가 자리 표시자에 들어갈 값을 알아낼 수 있어요(여러분이 직접 값을 채우는 게 아니에요).
구현에는 Prolog의 유한 영역 제약 논리 프로그래밍(CLP(FD))을 사용해야 해요. 이런 종류의 작업에 딱 맞는 도구죠.
시작하는 데 도움이 되도록, 스텁 파일에는 이미 다음을 통해 clpfd 라이브러리가 포함되어 있어요:
:- use_module(library(clpfd)).
Exercism에 가입하고 Prolog 트랙을 연습 문제 109개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.