Trilhas
/
Prolog
Prolog
/
Exercícios
/
Quebra-cabeça Binário
Quebra-cabeça Binário

Quebra-cabeça Binário

Médio

Introdução

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.

Instruções

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:

  1. Cada casa deve conter zero ou um.
  2. Não pode haver mais de dois dígitos iguais adjacentes. Assim, se duas casas adjacentes contêm o mesmo dígito, as casas ao lado dos dígitos devem conter o outro dígito.
  3. Cada linha e cada coluna devem conter a mesma quantidade de zeros e uns.
  4. Cada linha e cada coluna é única.

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.

Note

Para ajudar você a começar, o arquivo stub já inclui a biblioteca clpfd por meio de:

:- use_module(library(clpfd)).
Editar via GitHub O link abre em uma nova janela ou aba
Prolog Exercism

Tudo pronto para começar Quebra-cabeça Binário?

Crie sua conta no Exercism para aprender e dominar Prolog com 109 exercícios e mentoria humana de verdade, tudo de graça.