Este desafío se basa en otro desafío similar. Debido a que encontrar el empaque más eficiente de los rectángulos es NP-difícil (es decir, su solución es fácil de verificar pero difícil de encontrar), este desafío es mucho más fácil que este aquí
Este desafío
Dado un montón de rectángulos, averigua si llenan o no un espacio rectangular sin espacios ni superposiciones.
Entrada
La entrada puede ser de dos formas, una de las cuales conlleva una penalización de puntuación.
El primero: contiene una lista de sublistas, cada una con una longitud 4. Esta lista contiene 4 enteros que son las coordenadas de vértices opuestos. Como todos los rectángulos serán horizontales / verticales, no hay ambigüedad en cuanto a dónde está el rectángulo. Cada sublista contendrá cuatro enteros, que, en orden, son la coordenada x del primer vértice, la coordenada y del primer vértice, la coordenada x del segundo vértice y la coordenada y del segundo vértice.
El segundo: contiene cuatro listas de enteros con la misma longitud. Las cuatro listas representan las diferentes coordenadas. Si imagina la opción de entrada 1 como una matriz, la entrada aquí es solo la transposición de la matriz. Esta entrada lleva una +20%
penalización de byte.
Salida
Salida simple de verdad / falsedad.
Especificaciones
Si hay un rectángulo con área 0 (es decir, x1 == x2 || y1 == y2
), ignore este rectángulo (entonces [0 0 1 1], [2 2 3 2]
es válido). Esta especificación está en su lugar para que sea más difícil para las personas simplemente obtener los valores mínimo / máximo x / y.
x1 <= x2
y y1 <= y2
no siempre son verdad Si x1 > x2 || y1 > y2
, el rectángulo no es un rectángulo de área cero; más bien, ocupa el espacio rectangular entre (x1, y1)
y (x2, y2)
.
Las coordenadas pueden ser negativas, en cuyo caso aún ocupan el espacio entre las coordenadas.
El rectángulo superior izquierdo no siempre está en (0, 0)
; por lo tanto, el espacio rectangular que se llena no necesariamente tiene su esquina superior izquierda en (0, 0)
.
(Gracias a @xnor por señalar estas ambigüedades)
Especifique cómo desea su entrada y cómo se representará su salida.
Puntuación
La puntuación es el tamaño del código en bytes, más una penalización de bytes, si corresponde. El puntaje más bajo al 15 de diciembre gana.
Casos de prueba
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
¡Buena suerte, feliz golf!
x1 <= x2
y y1 <= y2
? ¿Es un área 0 rectángulo con x1 == x2
y y1 <= y2
posible?
x1 > x2
y y1 > y2
, ¿es este un rectángulo de área cero porque las coordenadas están cambiadas?