Hintergrund
Ich habe ein paar quadratische Kisten gleicher Größe, und da ich eine nette Person bin, möchte ich sie alle in einer quadratischen Formation anordnen. Ihre Anzahl ist jedoch nicht unbedingt ein perfektes Quadrat, daher muss ich möglicherweise die Quadratform approximieren. Ich möchte, dass Sie mir das ästhetischste Arrangement finden - natürlich programmatisch.
Eingang
Ihre Eingabe ist eine einzelne positive Ganzzahl k
, die die Anzahl der Felder darstellt.
Ausgabe
Ihr Programm muss zwei positive ganze Zahlen auswählen m, n
, m*(n-1) < k ≤ m*n
die gelten. Sie repräsentieren die Breite und Höhe der großen quadratischen Form, die wir anordnen. Da wir nach ästhetisch ansprechenden Formen suchen, muss die Menge minimal sein, so dass die Form nahe an einem Quadrat liegt und ihre Fläche nahe beieinander liegt . Wenn es noch mehrere Kandidaten für das Paar gibt , wählen Sie den, bei dem die Breite maximal ist.(m - n)2 + (m*n - k)2
k
(m, n)
m
Jetzt soll Ihre tatsächliche Ausgabe nicht die Zahlen m
und sein n
. Stattdessen müssen Sie die Anordnung der Kästchen drucken und das Zeichen verwenden #
, um ein Kästchen darzustellen. Genauer gesagt, wird Sie drucken n-1
Reihen, von denen jede besteht aus m
Zeichen #
, und dann eine Reihe von k - m*(n-1)
Zeichen #
. Beachten Sie, dass die Ausgabe genau k
Zeichen enthält #
.
Regeln und Wertung
Die Ausgabe darf keine führenden oder nachfolgenden Leerzeichen enthalten, außer dass die letzte Zeile auf Wunsch mit nachfolgenden Leerzeichen aufgefüllt werden kann, um die Länge zu m
bestimmen. Möglicherweise gibt es eine nachfolgende neue Zeile, aber keine vorhergehenden Zeilenumbrüche. #
Falls gewünscht, können Sie anstelle von ein beliebiges druckbares ASCII-Zeichen verwenden .
Sie können ein vollständiges Programm schreiben oder eine Zeichenfolge von einer Funktion zurückgeben. Die niedrigste Byteanzahl gewinnt und Standardschlupflöcher sind nicht zulässig.
Testfälle
Hier sind die richtigen Ausgänge für einige Eingabewerte.
1
#
2
##
3
##
#
4
##
##
8
###
###
##
13
#####
#####
###
17
######
######
#####
18
#####
#####
#####
###
20
#####
#####
#####
#####
21
######
######
######
###
22
######
######
######
####
23
#####
#####
#####
#####
###