Created
February 22, 2024 18:27
-
-
Save alexjosesilva/6d5064d125cf129540ed66095d198235 to your computer and use it in GitHub Desktop.
Programacao Logica
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% Predicado para verificar se uma rainha pode ser colocada em uma posição. | |
pode_colocar(_, []). | |
pode_colocar(Rainha, [Coluna/Linha|OutrasRainhas]) :- | |
Rainha #\= Linha, | |
Rainha + Coluna #\= Linha, | |
Rainha - Coluna #\= Linha, | |
pode_colocar(Rainha, OutrasRainhas). | |
% Predicado principal para posicionar as oito rainhas. | |
oito_rainhas([], []). | |
oito_rainhas([Coluna/Linha|OutrasRainhas], [Rainha|Resto]) :- | |
oito_rainhas(OutrasRainhas, Resto), | |
member(Rainha, [1,2,3,4,5,6,7,8]), | |
pode_colocar(Rainha, [Coluna/Linha|OutrasRainhas]). | |
% Predicado para imprimir o tabuleiro. | |
imprimir_tabuleiro([]). | |
imprimir_tabuleiro([Coluna/Linha|OutrasRainhas]) :- | |
imprimir_tabuleiro(OutrasRainhas), | |
write('|'), | |
between(1, 8, X), | |
(member(X, [Coluna]), write('Q'); write('.')), | |
write('|'), | |
nl. | |
% Predicado para iniciar a resolução do problema. | |
resolver_oito_rainhas :- | |
oito_rainhas([1/_1, 2/_2, 3/_3, 4/_4, 5/_5, 6/_6, 7/_7, 8/_8], Tabuleiro), | |
imprimir_tabuleiro(Tabuleiro). |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment