Apresentado no 5º semestre de Ciência da Computação na Universidade Presbiteriana Mackenzie (UPM) na disciplina de Paradigmas de Linguagens de Programação, "Está em Xeque?" é um projeto elaborado para o estudo de paradigmas funcionais de programação com Haskell. O objetivo é escrever um programa que irá receber uma lista de listas no formato da Notação de Forsyth e retornar verdadeiro se o rei branco está em xeque, ou falso caso contrário.
Parte I:
O que é Xeque
O que é Notação Forsyth
Parte II:
Detalhes de Implementação
Documentação
Parte III:
Referências
Em partidas de xadrez, o xeque atua como um anúncio de perigo para algum dos reis no tabuleiro. Como um rei nunca pode ser capturado, o termo é utilizado para determinar que o rei está em ameaça e que o jogador que está em xeque deve mover o rei de modo que ele saia dessa posição.
Exemplo
No tabuleiro a seguir, o jogador das peças brancas moveu o seu bispo para a casa b5 para atacar o rei negro, colocando-o em posição de xeque.
Notação de Forsyth é um método utilizado para o registro da posição de uma peça em uma partida de xadrez, criado pelo jornalista escocês David Forsyth, tendo se tornado muito popular no século XIX.
A regra para o registro de uma posição Forsyth é começar a registrar a posição das peças da linha das pretas (linha 8) até a linha das brancas (linha 1), correndo da esquerda para a direita, como em uma leitura. As peças são anotadas pelas letras, como ‘R’ para o Rei, ‘D’ para a Dama, ‘B’ para o Bispo, ‘C’ para Cavalo, ‘T’ para Torre e ‘P’ para Peão. As peças brancas são anotadas com letras maiúsculas e as peças pretas com letras minúsculas. As casas vazias são anotadas apenas com um número, indicando quantas casas vazias estão “na corrida”. Por exemplo, uma linha sem peças é anotada como um número 8. Se temos três casas vazias, uma Torre branca e quatro casas vazias, a linha é anotada como 3T4. Diferentes linhas são anotadas com um traço ou barra entre elas. Assim, a posição inicial do jogo é anotada como: tcbdrbct-pppppppp-8-8-8-8-PPPPPPPP-TCBDRBCT
.
Note
Os detalhes de implementação serão adicionados conforme a progressão do projeto.
Note
Os detalhes da documentação serão adicionados conforme a progressão do projeto na seção Wiki.