Imagine una cuadrícula de cuadrados W por H que se envuelve toroidalmente. Los elementos se colocan en la cuadrícula de la siguiente manera.
El primer elemento se puede colocar en cualquier casilla, pero los elementos posteriores no deben estar dentro de una distancia R de Manhattan de ningún elemento anterior (también conocido como vecindario Von Neumann de rango R ). Elegir cuidadosamente las posiciones permite ajustar una gran cantidad de elementos en la cuadrícula antes de que no haya más posiciones válidas. Sin embargo, considere el objetivo opuesto: ¿Cuál es el menor número de elementos que se pueden colocar y no dejan más posiciones válidas?
Aquí hay una zona de exclusión de radio 5:
Aquí hay otra zona de exclusión de radio 5, esta vez cerca de los bordes para que el comportamiento de ajuste sea evidente:
Entrada
Tres enteros:
- W : ancho de la cuadrícula (entero positivo)
- H : altura de la cuadrícula (entero positivo)
- R : radio de zona de exclusión (entero no negativo)
Salida
Un entero N , que es el número más pequeño de elementos que se pueden colocar, lo que evita cualquier ubicación válida adicional.
Detalles
- Un radio de cero da una zona de exclusión de 1 cuadrado (en el que se colocó el elemento).
- Un radio de N excluye la zona que se puede alcanzar en N pasos ortogonales (recuerde que los bordes se envuelven toroidalmente).
Su código debe funcionar para el caso trivial de R = 0, pero no necesita funcionar para W = 0 o H = 0.
El código también debe lidiar con el caso en que R > W o R > H .
Límite de tiempo y casos de prueba
Su código debe poder manejar todos los casos de prueba, y cada caso de prueba debe completarse en 5 minutos. Esto debería ser fácil (la solución de JavaScript de ejemplo tarda unos segundos en cada caso de prueba). El límite de tiempo es principalmente para excluir el enfoque de fuerza bruta extrema. El enfoque de ejemplo sigue siendo la fuerza bruta.
Si su código se completa en 5 minutos en una máquina pero no en otra, estará lo suficientemente cerca.
Casos de prueba en las entradas de formulario: salida comoW H R : N
5 4 4 : 1
5 4 3 : 2
5 4 2 : 2
5 4 1 : 5
7 5 5 : 1
7 5 4 : 2
7 5 3 : 2
7 5 2 : 4
8 8 8 : 1
8 8 7 : 2
8 8 6 : 2
8 8 5 : 2
8 8 4 : 2
8 8 3 : 4
7 6 4 : 2
7 6 2 : 4
11 7 4 : 3
11 9 4 : 4
13 13 6 : 3
11 11 5 : 3
15 14 7 : 2
16 16 8 : 2
Fragmento para ayudar a visualizar y jugar con ideas
Solución de ejemplo (sin golf)
Solo un ejemplo para salidas pequeñas (resultantes de un radio no mucho más pequeño que el ancho y la altura). Puede manejar cualquiera de los casos de prueba, pero expirará y se dará por vencido en la mayoría de los casos más grandes.