正多边形的区域


10

给定绘制了所有对角线的规则N形,对角线会形成多少个区域?

例如,正三角形的正整数为1,正方形的正整数为4,五边形的正整数为11,六边形的正整数为24。

  • 分数与解决方案中的字节数成反比
  • 可能会根据运行时间将小的软糖因素添加到分数中
  • 多边形周围的区域不计算在内

1
所以...编写一个返回该结果
暴民

Answers:


11

Mathematica 118

尽管有定义明确的例程可以计算绘制了所有对角线的正则n边形中的区域数,但它们非常麻烦。我认为采用图像处理方法可能会很有趣:如果我们绘制带有对角线的n边形,是否有可能从绘制的图像中计算出区域(更准确地说,是从图像的光栅化和二值化表示为数组)?

以下生成并处理多边形的实际图像,并根据光栅化图像确定区域数。

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 s来运行。)上面的例程可以正常工作,直到并包括一个14-Complete图,如下所示。我发现这令人惊讶,因为即使以1200 x 1200像素显示图像,也很难看到952个区域。

下图是光栅化和二值化之前的图像。

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 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.