Esse desafio é baseado em outro desafio semelhante. Como encontrar o empacotamento de retângulos mais eficiente é NP-difícil (ou seja, sua solução é fácil de verificar, mas difícil de encontrar), esse desafio é muito mais fácil do que este aqui
Este desafio
Dado um monte de retângulos, descubra se eles preenchem ou não um espaço retangular sem lacunas ou sobreposições.
Entrada
A entrada pode ser de duas formas, uma das quais tem uma penalidade de pontuação.
O primeiro: contém uma lista de sublistas, cada uma com comprimento 4. Esta lista contém 4 números inteiros, que são as coordenadas dos vértices opostos. Como todos os retângulos serão horizontais / verticais, não há ambiguidade quanto ao local onde o retângulo está. Cada sub-lista conterá quatro números inteiros, que, em ordem, são a coordenada x do primeiro vértice, a coordenada y do primeiro vértice, a coordenada x do segundo vértice e a coordenada y do segundo vértice.
O segundo: contém quatro listas de números inteiros com o mesmo comprimento. As quatro listas representam as diferentes coordenadas. Se você imaginar a opção de entrada 1 como uma matriz, a entrada aqui é apenas a transposição da matriz. Esta entrada possui uma +20%
penalidade de bytes.
Resultado
Saída simples de verdade / falsidade.
Especificações
Se houver um retângulo com a área 0 (ou seja, x1 == x2 || y1 == y2
), desconsidere esse retângulo (isso [0 0 1 1], [2 2 3 2]
é válido). Essa especificação existe para tornar mais difícil para as pessoas simplesmente obterem os valores mínimo / máximo x / y.
x1 <= x2
e y1 <= y2
nem sempre são verdadeiras. Se x1 > x2 || y1 > y2
, o retângulo não é um retângulo de área zero; em vez disso, ocupa o espaço retangular entre (x1, y1)
e (x2, y2)
.
As coordenadas podem ser negativas, caso em que ainda ocupam o espaço entre as coordenadas.
O retângulo superior esquerdo mais nem sempre está em (0, 0)
; portanto, o espaço retangular que é preenchido não necessariamente tem seu canto superior esquerdo em (0, 0)
.
(Agradecemos a @xnor por apontar essas ambiguidades)
Especifique como deseja sua entrada e como sua saída será representada.
Pontuação
Pontuação é o tamanho do código em bytes, mais uma penalidade de bytes, se aplicável. A pontuação mais baixa a partir de 15 de dezembro vence.
Casos de teste
0 0 1 2
1 0 3 1 ==> true
1 1 3 2
0 0 2 2
0 0 1 1 ==> false
0 0 0 0
0 0 1 1
2 2 2 2 ==> true
0 1 2 1
Boa sorte, feliz golfe!
x1 <= x2
e y1 <= y2
? É um retângulo da área 0 com x1 == x2
e é y1 <= y2
possível?
x1 > x2
e y1 > y2
, é um retângulo de área zero porque as coordenadas são trocadas?