Wilayah poligon reguler

10

Diberikan N-gon reguler dengan semua diagonal digambar, berapa banyak daerah yang terbentuk diagonal?

Misalnya, segitiga biasa memiliki tepat 1, kuadrat memiliki tepat 4, pentagon memiliki tepat 11, dan segi enam memiliki 24.

  • skor berbanding terbalik dengan jumlah byte dalam solusi
  • faktor fudge kecil dapat ditambahkan ke skor berdasarkan runtime mereka
  • wilayah di sekitar poligon tidak masuk hitungan
Wug
sumber
1
Jadi ... tulis sebuah program yang mengembalikan ini
mob

Jawaban:

11

Mathematica 118

Meskipun ada rutinitas yang terdefinisi dengan baik untuk menghitung jumlah daerah dalam n-gon reguler dengan semua diagonal digambar , mereka cukup rumit. Saya pikir mungkin akan menyenangkan untuk mengambil pendekatan pemrosesan gambar : jika kita menggambar n-gon dengan diagonal-nya, apakah mungkin menghitung daerah dari gambar yang diambil (lebih tepatnya, dari representasi gambar yang diraster dan ter-biner dari gambar sebagai sebuah array)?

Berikut ini menghasilkan dan memproses gambar aktual poligon dan menentukan jumlah daerah dari gambar raster.

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}

Inilah yang mungkin disebut sebagai solusi insinyur. Ini menyelesaikan pekerjaan, tetapi hanya dalam beberapa kondisi terbatas. (Dan lambat: kode di atas membutuhkan waktu 4,24 detik untuk dijalankan.) Rutin di atas berfungsi dengan benar dan termasuk grafik 14-Lengkap , yang ditunjukkan di bawah ini. Saya menemukan ini mengejutkan, mengingat bahwa beberapa dari 952 daerah sangat sulit untuk dilihat, bahkan ketika gambar ditampilkan pada 1200 x 1200 piksel.

Gambar di bawah ini adalah gambar sebelum di -raster dan binarized.

Grafik 14-lengkap

DavidC
sumber
3

Excel, 341 byte

Menerapkan formula yang diberikan pada tautan Woflram Mathworld dalam komentar @ 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

Tidak dikelompokkan untuk beberapa kejelasan:

=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 
Wernisch
sumber