1

これが私が達成しようとしていることです。100 個のアイテムがあるとします。「グリッド」(x、yポイントで構成される各アイテム)を作成したい。グリッドをできるだけ正方形に近づけたい。グリッドの幅とグリッドの高さを決定するための数学はありますか? (グリッドの幅と高さとは、x アイテムの数と Y アイテムの数を意味します)

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

4

4 に答える 4

4

平方根はまさにあなたが必要とするものです。

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

これは、N 個を超える場所があり、正方形に最も近い最小の四角形です。

さて...正確にN個の場所を持ち、正方形に最も近い長方形を見つけたい場合...それは別の問題です。

最も近いN、xの係数を見つける必要があります

N の因数を調べて、sqrt(N) に最も近いものを見つける必要があります。次に、長方形は x × N/x で、どちらも整数です。

于 2010-02-04T05:36:59.803 に答える
2

ここで考慮すべき問題がいくつかあります。グリッドをできるだけ正方形にしたい場合は、多くの N に対して空のセルが含まれます。簡単な例は N=10 です。3x4 グリッドを作成できますが、空のセルが 2 つになります。一方、2x5 グリッドには空のセルはありません。一部の N (素数) では、グリッド内に常に空のセルがあります。

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

例:

N = 40
R = int(sqrt(N)) = 6
C = int(40 / 6) + 1 = 7
grid is 6x7
于 2010-02-04T03:53:22.373 に答える
1

私はこの問題を解決しようとしていました.html/cssのグリッドは、寸法が固定されており、N個のアイテムが収まる場所です. そのための独自のスクリプトをjavascriptで作成することになりました。

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

于 2013-05-21T23:00:29.380 に答える
0

Eli の回答を調べたところ、指摘したいことがわかりました。一般化のために、R x C (C = int(N/R)) が正確に N でない場合にのみ、C に 1 を追加する必要があります。したがって、例外には、平方根を含む数値と正確に の積である数値の両方が含まれます。 2 つの整数。

例えば:

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

それが役に立てば幸い。

于 2016-08-16T19:55:29.843 に答える