Regiony regularnych wielokątów


10

Biorąc pod uwagę regularny N-gon ze wszystkimi narysowanymi przekątnymi, ile regionów tworzą przekątne?

Na przykład regularny trójkąt ma dokładnie 1, kwadrat ma dokładnie 4, pięciokąt ma dokładnie 11, a sześciokąt ma 24.

  • wynik jest odwrotnie proporcjonalny do liczby bajtów w roztworze
  • małe współczynniki krówki mogą być dodawane do wyników na podstawie ich czasu działania
  • region otaczający wielokąt nie ma znaczenia

1
Więc ... napisz program, który to
mob

Odpowiedzi:


11

Mathematica 118

Chociaż istnieją dobrze zdefiniowane procedury obliczania liczby regionów w regularnym n-gonie ze wszystkimi narysowanymi przekątnymi , są one dość kłopotliwe. Pomyślałem, że fajnie byłoby zastosować podejście do przetwarzania obrazu : jeśli narysujemy n-gon z jego przekątnymi, czy byłoby możliwe policzenie regionów z narysowanego obrazu (a dokładniej z rasteryzowanej i binarnej reprezentacji obrazu jako tablica)?

Poniżej przedstawiono i przetwarza rzeczywisty obraz wielokąta i określa liczbę regionów na podstawie obrazu rasteryzowanego.

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}

Jest to tak zwane rozwiązanie inżynierskie. Wykonuje pracę, ale tylko w pewnych ograniczonych warunkach. (I jest powolny: uruchomienie powyższego kodu zajęło 4,24 s.) Powyższa procedura działa poprawnie aż do 14-kompletnego wykresu , pokazanego poniżej. Zaskoczyło mnie to, biorąc pod uwagę, że niektóre z 952 regionów są bardzo trudne do zobaczenia, nawet gdy obraz jest wyświetlany w rozdzielczości 1200 na 1200 pikseli.

Poniższy obraz jest obrazem przed rasteryzacją i binaryzacją.

14-kompletny wykres


3

Excel, 341 bajtów

Implementuje formułę podaną w linku Woflram Mathworld w komentarzu @ 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 dla pewnej jasności:

=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 
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.