Entrega via classroom ate as 8h da manha de 15/10.
O projeto pode ser feito individualmente ou em grupos de ate 3 pessoas.
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:
N
X1
e Y2
são as coordenadas do canto inferior esquerdo de um retângulo,X3
e Y3
sao as coordenadas do canto superor direito do retângulo.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.
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.
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.
[
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
Apenas um membro do grupo deve submeter o trabalho.
Nomeie o arquivo com o seu RA e extensão .pl
por exemplo 123456.pl
Inclua o nome e RA dos membros do grupo como comentario no começo do arquivo.