バックグラウンド
私は同じサイズの正方形の箱をたくさん持っています。私はきちんとした人なので、それらをすべて正方形の形に整理したいと思います。ただし、その数は必ずしも完全な正方形ではないため、正方形の形状を近似する必要があります。もちろん、プログラム的には、最も審美的に楽しいアレンジを見つけてほしい。
入力
入力は、k
ボックスの数を表す単一の正の整数です。
出力
プログラムはm, n
、m*(n-1) < k ≤ m*n
成立するような2つの正の整数を選択します。これらは、配置する大きな正方形のような形状の幅と高さを表します。審美的に楽しい形状を探しているので、形状は正方形に近く、その面積はに近くなるように、量は最小限にします。ペアの候補がまだいくつかある場合は、幅が最大になるものを選択します。(m - n)2 + (m*n - k)2
k
(m, n)
m
これで、実際の出力は数字とになりません。代わりに、ボックスを表す文字を使用して、ボックスの配置を印刷する必要があります。具体的には、あなたは印刷するもので構成され、それぞれが、行を文字、その後の1行の文字。出力には正確に文字が含まれていることに注意してください。m
n
#
n-1
m
#
k - m*(n-1)
#
k
#
ルールとスコアリング
出力に先頭または末尾の空白があってはなりません。ただしm
、必要に応じて、最後の行の末尾に空白を追加してlength にすることができます。末尾に改行が1つある場合がありますが、先行する改行はありません。#
必要に応じて、の代わりに印刷可能なASCII文字を使用できます。
完全なプログラムを作成することも、関数から文字列を返すこともできます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。
テストケース
いくつかの入力値の正しい出力を次に示します。
1
#
2
##
3
##
#
4
##
##
8
###
###
##
13
#####
#####
###
17
######
######
#####
18
#####
#####
#####
###
20
#####
#####
#####
#####
21
######
######
######
###
22
######
######
######
####
23
#####
#####
#####
#####
###