Percursos
/
Prolog
Prolog
/
Exercícios
/
Puzzle binário
Puzzle binário

Puzzle binário

Médio

Introdução

A tua avó despertou recentemente um grande interesse por resolver puzzles binários. Embora esteja a ficar cada vez melhor, ainda fica presa com bastante frequência. Como és um neto prestável, decides criar uma pequena aplicação capaz de resolver qualquer puzzle binário. Assim, podes dar à tua avó pistas para o próximo movimento dela.

Instruções

A tua tarefa é resolver um puzzle binário. Todos os puzzles binários têm exatamente uma solução, que pode ser encontrada aplicando estas regras:

  1. Cada célula tem de conter um zero ou um um.
  2. Não pode haver mais de dois algarismos iguais adjacentes. Assim, se duas células adjacentes contiverem o mesmo algarismo, as células ao lado desses algarismos têm de conter o outro algarismo.
  3. Cada linha e cada coluna têm de conter o mesmo número de zeros e de uns.
  4. Cada linha e cada coluna são únicas.

Vais receber um puzzle incompleto na forma de linhas de zeros e uns, com marcadores de posição (_) para os valores desconhecidos. O objetivo é definires as regras do puzzle binário, o que vai permitir que os testes determinem os valores dos marcadores de posição (não és tu que o fazes). A tua implementação tem de usar a Programação Lógica com Restrições sobre Domínios Finitos (CLP(FD)) do Prolog, que é perfeita para este tipo de tarefas.

Note

Para te ajudar a começar, o ficheiro stub já inclui a biblioteca clpfd através de:

:- use_module(library(clpfd)).
Editar via GitHub A ligação abre numa nova janela ou separador
Prolog Exercism

Estás pronto para começar Puzzle binário?

Inscreve-te no Exercism para aprenderes e dominares Prolog com 109 exercícios, e mentoria humana real, tudo grátis.