Régions de polygones réguliers

10

Étant donné un N-gon régulier avec toutes les diagonales dessinées, combien de régions les diagonales forment-elles?

Par exemple, un triangle régulier a exactement 1, un carré a exactement 4, le pentagone a exactement 11 et un hexagone a 24.

  • le score est inversement proportionnel au nombre d'octets dans la solution
  • de petits facteurs de fudge peuvent être ajoutés aux scores en fonction de leur durée d'exécution
  • la région entourant le polygone ne compte pas
Wug
la source
1
Alors ... écrivez un programme qui renvoie ceci
mob

Réponses:

11

Mathematica 118

Bien qu'il existe des routines bien définies pour calculer le nombre de régions dans un n-gon régulier avec toutes les diagonales dessinées , elles sont assez lourdes. J'ai pensé qu'il pourrait être amusant d'adopter une approche de traitement d'image : si nous dessinons le n-gon avec ses diagonales, serait-il possible de compter les régions à partir de l'image dessinée (plus précisément, à partir de la représentation tramée et binarisée de l'image comme un tableau)?

Ce qui suit produit et traite une image réelle d'un polygone et détermine le nombre de régions à partir de l'image tramée.

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}

C'est ce que l'on pourrait appeler une solution d'ingénieur. Il fait le travail, mais seulement dans certaines conditions limitées. (Et c'est lent: le code ci-dessus a pris 4,24 s pour s'exécuter.) La routine ci-dessus fonctionne correctement jusqu'à et incluant un graphique 14-Complete , montré ci-dessous. J'ai trouvé cela surprenant, étant donné que certaines des 952 régions sont très difficiles à voir, même lorsque l'image est affichée à 1200 x 1200 pixels.

L'image ci-dessous est l'image avant d' être tramée et binarisée.

Graphique complet de 14

DavidC
la source
3

Excel, 341 octets

Implémente la formule donnée sur le lien Woflram Mathworld dans le commentaire de @ 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

Non golfé pour plus de clarté:

=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
la source