Dadas las coordenadas de las esquinas superiores izquierdas de dos cuadrados y sus longitudes laterales, determine si los cuadrados se superponen. Un cuadrado incluye las líneas superior e izquierda, pero no las líneas inferior y derecha. Es decir, un punto (a,b)está dentro de un cuadrado con longitud lateral kque comienza en (x,y)si y solo si x <= a < x+ky y <= b < y+k. Un cuadrado con longitud lateral 0 es degenerado y no se considerará aquí, por lo tanto, kserá positivo.
Como de costumbre, se aplican todas las reglas estándar. La entrada y la salida pueden estar en cualquier forma que sea conveniente, siempre que sea legible por humanos y no haya una precomputación. Asegúrese de especificar qué formato de entrada usa. Su código debe tomar seis números y generar una verdad si los cuadrados se superponen y falsa de lo contrario.
Casos de prueba
x1 y1 k1 x2 y2 k2 overlap?
1 1 1 0 1 1 false
0 0 3 1 1 1 true
1 1 1 0 0 3 true
0 0 3 2 1 2 true
0 0 2 1 1 2 true
1 1 2 0 0 2 true
0 1 2 1 0 2 true
1 0 2 0 1 2 true
2 0 2 0 2 2 false
1 0 3 0 1 1 false
0 2 3 0 0 2 false
Todas las entradas serán enteros no negativos. Dicho esto, espero que muchas o la mayoría de las soluciones también puedan manejar negativos y flotadores.

Respuestas:
Python, 33 bytes
Python admite cadenas de desigualdades incluso cuando apuntan en direcciones opuestas.
La coordenada x intervalos
[x,x+k)y[X,X+K)se superponen, siempre y cuando ninguno de los dos es totalmente a la derecha de la otra, lo que significa que extremo izquierdo de cada intervalo se deja de punto final derecho del otro intervalo.El puede combinarse en una desigualdad conjunta
-K<X-x<k. Escribir lo mismo para las coordenadas y y empalmarlas-Kda la expresiónfuente
MATL,
14111054 bytesEsta solución acepta entradas en forma de dos matrices:
[x1, y1; x2, y2][k2; k1]Pruébalo en línea
Versión ligeramente modificada para ejecutar todos los casos de prueba
Explicación
fuente
MATLAB,
3621 bytesCrea una función anónima que se puede evaluar como
ans(a,b). Acepta dos entradas del siguiente formato:[x1, y1; x2, y2].[k2; k1]Todos los casos de prueba aquí .
Explicación
Aquí hay una solución comentada sin golf
fuente
JavaScript (ES6), 38 bytes
Si d - a ≥ c, entonces el segundo cuadrado está a la derecha del primero. Del mismo modo, las otras condiciones verifican que no esté a la izquierda, debajo o arriba.
fuente
Jalea , 8 bytes
La entrada es la lista anidada [[x1, y1, k1], [x2, y2, k2]] , la salida es la lista de todas las coordenadas incrementales de puntos con coordenadas enteras que son comunes a ambos cuadrados (falso si está vacío, verdad si no )
Pruébalo en línea! o verificar todos los casos de prueba .
Cómo funciona
fuente
TI Basic, 36 bytes
fuente
Java, 78 bytes
fuente
Objecttipo de retorno para -1 byteOctava, 17 bytes
La misma lógica que mi respuesta MATLAB anterior, excepto que Octave admite la transmisión automática de dimensiones para que podamos reemplazarlas
[b,b]simplementeb.Todos los casos de prueba aquí
fuente
SmileBASIC,
7657 bytesCrea un sprite con el tamaño / posición del primer cuadrado, luego comprueba si colisiona con el segundo cuadrado.
fuente
x86-64 Código de máquina, Windows 22 bytes
Firma C ++:
Devuelve 0 si los cuadrados no se superponen y -1 (0xFFFFFFFF) de lo contrario. Las entradas son vectores de 2 enteros de 64 bits para x, y y k (
_mm_set_epi64x(x1, x2)etc.).fuente
05AB1E , 5 bytes
Puerto de @Suever respuesta MAT 's , con la conversión adicional a consecuencia Truthy / Falsey-. Por lo tanto, el formato de entrada también es el mismo:
primera entrada como
[[x1,y1],[x2,y2]]y segunda entrada como[k2,k1].Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente