Sua avó se interessou recentemente por resolver quebra-cabeças binários. Ela está ficando cada vez melhor nisso, mas ainda fica travada com bastante frequência. Como você quer ajudar sua avó, decide criar uma pequena aplicação capaz de resolver qualquer quebra-cabeça binário. Assim, você poderá dar dicas a ela para o próximo movimento.
Sua tarefa é resolver um quebra-cabeça binário. Todo quebra-cabeça binário tem exatamente uma solução, que pode ser encontrada aplicando estas regras:
Você vai receber um quebra-cabeça incompleto na forma de linhas de zeros e uns, com placeholders (_) para os valores desconhecidos.
O objetivo é definir as regras do quebra-cabeça binário, que permitirão que os testes descubram os valores dos placeholders (isso não é tarefa sua).
Sua implementação deve usar a Programação em Lógica com Restrições sobre Domínios Finitos (CLP(FD)) do Prolog, que é perfeita para esse tipo de tarefa.
Para ajudar você a começar, o arquivo stub já inclui a biblioteca clpfd por meio de:
:- use_module(library(clpfd)).
Crie sua conta no Exercism para aprender e dominar Prolog com 109 exercícios e mentoria humana de verdade, tudo de graça.