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*ndie 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)2k(m, n)m
Jetzt soll Ihre tatsächliche Ausgabe nicht die Zahlen mund 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-1Reihen, von denen jede besteht aus mZeichen #, und dann eine Reihe von k - m*(n-1)Zeichen #. Beachten Sie, dass die Ausgabe genau kZeichen 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 mbestimmen. 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
#####
#####
#####
#####
###