Antecedentes
Al expandir y cancelar los términos, es fácil mostrar la siguiente identidad:
Sin embargo, es un problema abierto si todos los rectángulos 1 / n por 1 / (n + 1) pueden enlosar el cuadrado de la unidad.
La tarea
Su programa debe tomar un número entero positivo N como entrada de cualquier manera conveniente, y empaque todos los rectángulos abiertos 1 / n-por-1 / (n + 1) con n entre 1 y N inclusive en el cuadrado de la unidad, de modo que no se superpongan dos .
Para cada rectángulo, debe generar los siguientes enteros en orden:
- 1 si los bordes horizontales son más largos que los bordes verticales, de lo contrario 0
- El numerador y el denominador de la coordenada x de la esquina inferior izquierda
- El numerador y el denominador de la coordenada y de la esquina inferior izquierda
Tenga en cuenta que consideramos que el cuadrado de la unidad es (0, 1) x (0, 1)
, con valores de x de izquierda a derecha y valores de y de abajo hacia arriba.
El resultado final esperado es la concatenación de estos enteros para cada rectángulo en orden de aumentar n, en cualquier formato conveniente (por ejemplo, impreso en stdout, o como una lista devuelta por una función).
Ejemplo de entrada y salida
Entrada:
3
Salida:
0 0 1 0 1 1 1 2 0 1 1 1 2 1 3
Esto se analiza de la siguiente manera:
0 (0/1, 0/1) 1 (1/2, 0/1) 1 (1/2, 1/3)
Puntuación
Este es un desafío de código de golf, por lo que gana la respuesta con la menor cantidad de bytes. Sin embargo, su algoritmo también debe ser razonablemente eficiente; debería poder ejecutarse para todos N<=100
en un total de alrededor de 10 minutos.
Su solución debe proporcionar soluciones válidas para todos N<=100
, pero los algoritmos demostrablemente completos también son bienvenidos, incluso si no son los más cortos.