質問

OK、これが私が達成しようとしていることです。アイテムが 100 個あるとします。「グリッド」(各アイテムはx、y点で構成されます)を作成したいと考えています。グリッドをできるだけ正方形に近づけたいと考えています。単一の数値だけで必要なグリッドの幅とグリッドの高さを決定する何らかの数学はありますか?(グリッドの幅と高さとは、X 項目の数と Y 項目の数を意味します)

今考えてみると、varI=sqrt(45) のように数値の平方根をとり、varI...X=varI...X=varI... から小数点以下を削除すると、Y は varI+1 になるでしょうか。

役に立ちましたか?

解決

平方根は何が必要正確です。

N
x=floor(sqrt(N))
y=raise(N/x)

これはより多くのN場所よりを有し、正方形に最も近い最小の矩形である。

さて...あなたは正確にN場所があり、正方形の...別の問題だということに最も近い矩形を検索する場合。

あなたは、最も近い

だと、N、xの要因を見つける必要があります

あなたはNの要因を介して実行し、SQRT(N)に最も近いを見つける必要があります。その後、矩形はN / X、両方整数。

でxは

他のヒント

ここで考慮すべきいくつかの問題があります。あなたのグリッドはできるだけ正方形のようになりたい場合は、多くのNsのためにそれはそれで、空のセルを持つことになります。簡単な例ではN = 10です。あなたはそれのために3×4のグリッドを作成することができますが、それは2つの空のセルを持つことになります。 2x5のグリッドは、一方、空のセルを持つことになります。いくつかのNsと(素数)は常にグリッドの空のセルを持つことになります。

しかし、あなただけの四角をしたいとはい、あなたは平方根を取る必要があり、一般的に、空のフィールドを気にしない場合。 R = int(sqrt(N))を取る、あなたの番号が続いてNであると言います。次に、整数除算N/Rを行い、商を取るとそれに1を加えます。これはCです。グリッドはRxCです。注Nが(100のような)正方形である場合、これは特別なケースであるように、商に1を追加しない。

例:

N = 40
R = int(sqrt(N)) = 6
C = int(40 / 6) + 1 = 7
grid is 6x7

私は、固定寸法があり、N 個の項目が収まる html/css のグリッドについても、この問題を解決しようとしていました。結局、JavaScript で独自のスクリプトを作成しました。

私が使用した方法と数学に興味がある場合は、こちらをお読みください。 http://machinesaredigging.com/2013/05/21/jgridder-how-to-fit-elements-in-a-size-grid/, 、そこにすべてが文書化されています。私は再帰を使用しましたが、それは非常にうまく機能し、自分の言語にも同じ方法を使用できます。お役に立てれば。

私はイーライの答えを探求し、私が指摘したいのですが、何かを発見しました。一般性のために、一つはR X C(C = INT(N / R))が正確N.そうではない場合にのみ、Cに1を追加する必要があり、例外は正確積共に平方根と数字と数字を含みます二つの整数ます。

たとえば、

N = 12
R = 3
C = 4 (int(N/R))

希望、それは助けています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top