Khu vực của đa giác thường xuyên


10

Cho một N-gon thông thường với tất cả các đường chéo được vẽ, có bao nhiêu vùng hình thành các đường chéo?

Ví dụ: một tam giác thông thường có đúng 1, một hình vuông có đúng 4, hình ngũ giác có chính xác 11 và một hình lục giác có 24.

  • điểm số tỷ lệ nghịch với số byte trong giải pháp
  • yếu tố fudge nhỏ có thể được thêm vào điểm số dựa trên thời gian chạy của họ
  • khu vực xung quanh đa giác không được tính

1
Vì vậy, ... hãy viết một chương trình trả về điều này
mob

Câu trả lời:


11

Toán học 118

Mặc dù có các thói quen được xác định rõ để tính toán số lượng vùng trong một n-gon thông thường với tất cả các đường chéo được vẽ , nhưng chúng khá cồng kềnh. Tôi nghĩ rằng có thể rất thú vị khi thực hiện một phương pháp xử lý hình ảnh : nếu chúng ta vẽ n-gon bằng các đường chéo của nó, thì có thể đếm các vùng từ hình ảnh được vẽ (chính xác hơn là từ biểu diễn rasterized và binarized của hình ảnh như một mảng)?

Sau đây tạo và xử lý một hình ảnh thực tế của một đa giác và xác định số lượng các vùng từ hình ảnh rasterized.

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}

Đây là những gì có thể được gọi là giải pháp của kỹ sư. Nó hoàn thành công việc, nhưng chỉ trong một số điều kiện hạn chế. (Và nó rất chậm: đoạn mã trên mất 4,24 giây để chạy.) Quy trình trên hoạt động chính xác đến và bao gồm một biểu đồ 14-Complete , được hiển thị bên dưới. Tôi thấy điều này đáng ngạc nhiên, vì một số trong 952 vùng rất khó nhìn, ngay cả khi hình ảnh được hiển thị ở 1200 x 1200 pixel.

Hình dưới đây là hình ảnh trước khi được rasterized và binarized.

Đồ thị 14 hoàn thành


3

Excel, 341 byte

Thực hiện công thức được đưa ra trên liên kết Woflram Mathworld trong bình luận của @ mob.

=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

Ungolfed cho một số rõ ràng:

=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 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.