Регіони регулярних багатокутників


10

З огляду на регулярний N-gon з усіма діагоналями, скільки областей утворюють діагоналі?

Наприклад, звичайний трикутник має рівно 1, квадрат має рівно 4, п’ятикутник рівно 11, а шестикутник - 24.

  • оцінка обернено пропорційна кількості байтів у розчині
  • до балів можуть додаватися невеликі коефіцієнти витіснення залежно від часу їх виконання
  • область, що оточує багатокутник, не враховується

1
Отже ... напишіть програму, яка повертає це
моб

Відповіді:


11

Математика 118

Хоча існують чітко визначені процедури для обчислення кількості регіонів у звичайному n-gon із усіма намальованими діагоналями , вони досить громіздкі. Я вважав, що може бути цікавим підходити до обробки зображень : якщо ми намалюємо n-gon за допомогою діагоналей, чи можна було б порахувати регіони із намальованого зображення (точніше, з растрованого та бінарнізованого подання зображення як масив)?

Далі виробляється та обробляється фактичне зображення багатокутника та визначається кількість регіонів від растрованого зображення.

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-повний графік , показаний нижче. Мене це дивувало, враховуючи, що деякі з 952 регіонів дуже важко бачити, навіть коли зображення відображається у 1200 на 1200 пікселів.

Малюнок нижче - це зображення, перш ніж його растерізувати та бінаризувати.

14-повний графік


3

Excel, 341 байт

Реалізує формулу, подану на посилання Woflram Mathworld, у коментарі @ 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

Незрозумілий для ясності:

=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 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.