Segundo Projeto - Prolog

Segundo projeto - versão 1

Entrega via classroom ate as 8h da manha de 15/10.

O projeto pode ser feito individualmente ou em grupos de ate 3 pessoas.

Entrada

Leia um arquivo pelo stdin no formato

[ ret(M, X1, Y1, X2, Y2) , ret(M, X3, Y3, X4, Y4), ... ].

que lista um conjunto de retangulos, onde, para o primero retangulo:

e assim por diante para o segundo retângulo, para o terceiro, etc.

Assim

ret(abobora,1,2,10,20)

então os vertices do retângulo chamado abobora estão em

1,  2    - inferior esquerdo
10,20    - superior direito
1, 20    - superior esquedo 
10, 2    - inferior direito

Note que o arquivo de entrada contem apenas um termo em Prolog (terminado por .) que é uma lista de estruturas.

Saida

Imprima no stdout:

Cuidado que se a figura A tem intercessão com o B isso só conta uma vez, ja que possivelmente o programa pode considerar que intercessão de A com B é diferente de B com A.

Também não se preocupe com regiões onde mais de 2 retângulos fazer intercessão. Se 3 retângulos (A e B e C) tem uma intercessão, o seu programa só precisa contar apenas 3 intercessões (A com B), (A com C) e (B com C).

O seu programa rodará da seguinte forma

swipl -q -f seu-prog.pr -t topo  < teste

O que é importante é que o predicado topo (sem nenhum argumento) será o único predicado a ser chamado.

Dica

O central é definir quando dois retângulos tem alguma interceção. Uma vez que voce definiu quando 2 figuras tem intercessão, obtenha todas as soluções possíveis para a intercessão.

Exemplo

[
ret(a1, 0, 0, 2, 2),
ret(b2, 1, 1.5, 3, 4),
ret(c3, 2, 3, 5, 5),
ret(d4, 5, 1, 6, 2),
ret(e5, 5.2, 1.2, 5,7, 1.7)
].

que representa os retangulos na figura

a resposta é:

3
a1 b2
b2 c3
d4 e5

Submissão