正多角形の領域


10

すべての対角線が描かれた通常のNゴンが与えられた場合、対角線はいくつの領域を形成しますか?

たとえば、正三角形は正確に1、正方形は正確に4、五角形は正確に11、六角形は24です。

  • スコアはソリューションのバイト数に反比例します
  • 実行時間に基づいて、スコアに小さなファッジファクターを追加できます。
  • ポリゴンを囲む領域はカウントされません

1
だから... これ
mob

回答:


11

Mathematica 118

すべての対角線が描画された通常のnゴンの領域を計算するための明確に定義されたルーチンがありますが、それらは非常に面倒です。私は画像処理アプローチを取るのは楽しいかもしれないと思った:対角線でnゴンを描画する場合、描画された画像から(より正確には、画像のラスタライズおよび2値化された表現から)領域をカウントすることは可能でしょうか?配列)?

以下は、ポリゴンの実際の画像を生成および処理し、ラスタライズされた画像から領域の数を決定します。

Table[MorphologicalEulerNumber@Binarize@Rasterize@CompleteGraph[k, ImageSize->1200,EdgeStyle->Thickness[Large]],{k,3,14}]

{1、3、11、24、50、80、154、220、375、444、781、952}

これは、エンジニアのソリューションと呼ばれるかもしれません。それは仕事を成し遂げるが、いくつかの限られた条件内でのみ。(そして遅いです:上記のコードは実行に4.24秒かかりました。)上記のルーチンは、以下に示す14-Completeグラフまで正しく動作します。画像が1200 x 1200ピクセルで表示されている場合でも、952の領域のいくつかは非常に見にくいため、これは驚くべきことでした。

下の画像は、ラスタライズおよび2値化されるの画像です。

14完全なグラフ


3

Excel、341バイト

@mobのコメントのWoflram Mathworldリンクで指定された式を実装します。

=A1*(A1^3-6*A1^2+23*A1-42)/24+1+(MOD(A1,2)=0)*(A1*(42*A1-5*A1^2-40)/48-1)-(MOD(A1,4)=0)*3*A1/4+(MOD(A1,6)=0)*A1*(310-53*A1)/12+(MOD(A1,12)=0)*49/2*A1+(MOD(A1,18)=0)*32*A1+(MOD(A1,24)=0)*19*A1-(MOD(A1,30)=0)*36*A1-(MOD(A1,42)=0)*50*A1-(MOD(A1,60)=0)*190*A1-(MOD(A1,84)=0)*78*A1-(MOD(A1,90)=0)*48*A1-(MOD(A1,120)=0)*78*A1-(MOD(A1,210)=0)*48*A1

いくつかの明快さのためにゴルフ場外:

=A1*(A1^3-6*A1^2+23*A1-42)/24+1
+(MOD(A1,2)=0)  *(A1*(42*A1-5*A1^2-40)/48-1)
-(MOD(A1,4)=0)  *3*A1/4
+(MOD(A1,6)=0)  *A1*(310-53*A1)/12
+(MOD(A1,12)=0) *49/2*A1
+(MOD(A1,18)=0) *32*A1
+(MOD(A1,24)=0) *19*A1
-(MOD(A1,30)=0) *36*A1
-(MOD(A1,42)=0) *50*A1
-(MOD(A1,60)=0) *190*A1
-(MOD(A1,84)=0) *78*A1
-(MOD(A1,90)=0) *48*A1
-(MOD(A1,120)=0)*78*A1
-(MOD(A1,210)=0)*48*A1 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.