Antecedentes
Tengo un montón de cajas cuadradas de igual tamaño, y como soy una persona ordenada, quiero organizarlas todas en una formación cuadrada. Sin embargo, su número no es necesariamente un cuadrado perfecto, por lo que es posible que tenga que aproximar la forma cuadrada. Quiero que me encuentres el arreglo más estéticamente agradable, programáticamente, por supuesto.
Entrada
Su entrada es un solo entero positivo k
, que representa el número de cuadros.
Salida
Su programa elegirá dos enteros positivos m, n
tales que se m*(n-1) < k ≤ m*n
mantengan. Representan el ancho y la altura de la gran forma cuadrada que estamos organizando. Como estamos buscando formas estéticamente agradables, la cantidad será mínima, de modo que la forma esté cerca de un cuadrado y su área esté cerca . Si todavía hay varios candidatos para el par , elija el que tenga el ancho máximo.(m - n)2 + (m*n - k)2
k
(m, n)
m
Ahora, su salida real no será los números m
y n
. En su lugar, deberá imprimir la disposición de las cajas, utilizando el carácter #
para representar una caja. Más específicamente, deberá imprimir n-1
filas, cada una de las cuales consta de m
caracteres #
, y luego una fila de k - m*(n-1)
caracteres #
. Tenga en cuenta que la salida contiene exactamente k
caracteres #
.
Reglas y puntuación
No habrá espacios en blanco iniciales o finales en la salida, excepto que la última fila puede rellenarse con espacios finales para ser de longitud m
, si se desea. Puede haber una nueva línea final, pero no nuevas líneas anteriores. Puede usar cualquier carácter ASCII imprimible en lugar de #
, si lo desea.
Puede escribir un programa completo o devolver una cadena de una función. El conteo de bytes más bajo gana, y las lagunas estándar no se permiten.
Casos de prueba
Aquí están las salidas correctas para algunos valores de entrada.
1
#
2
##
3
##
#
4
##
##
8
###
###
##
13
#####
#####
###
17
######
######
#####
18
#####
#####
#####
###
20
#####
#####
#####
#####
21
######
######
######
###
22
######
######
######
####
23
#####
#####
#####
#####
###