Regioni di poligoni regolari


10

Data una N-gon normale con tutte le diagonali disegnate, quante regioni formano le diagonali?

Ad esempio, un triangolo regolare ha esattamente 1, un quadrato ne ha esattamente 4, il pentagono ha esattamente 11 e un esagono ne ha 24.

  • il punteggio è inversamente proporzionale al numero di byte nella soluzione
  • piccoli fattori di fudge possono essere aggiunti ai punteggi in base alla loro durata
  • la regione che circonda il poligono non conta

1
Quindi ... scrivi un programma che restituisca questo
mob

Risposte:


11

Mathematica 118

Sebbene ci siano routine ben definite per calcolare il numero di regioni in una normale n-gon con tutte le diagonali disegnate , sono piuttosto ingombranti. Ho pensato che sarebbe stato divertente adottare un approccio all'elaborazione delle immagini : se disegnassimo n-gon con le sue diagonali, sarebbe possibile contare le regioni dall'immagine disegnata (più precisamente, dalla rappresentazione rasterizzata e binarizzata dell'immagine come un array)?

Quanto segue produce ed elabora un'immagine reale di un poligono e determina il numero di regioni dall'immagine rasterizzata.

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}

Questo è ciò che potrebbe essere definito la soluzione di un ingegnere. Svolge il lavoro, ma solo in alcune condizioni limitate. (Ed è lento: l'esecuzione del codice sopra ha richiesto 4,24 s.) La routine sopra funziona correttamente fino a includere un grafico 14-Complete , mostrato di seguito. L'ho trovato sorprendente, dato che alcune delle 952 regioni sono molto difficili da vedere, anche quando l'immagine viene visualizzata a 1200 per 1200 pixel.

L'immagine sotto è l'immagine prima di essere rasterizzata e binarizzata.

Grafico 14 completo


3

Excel, 341 byte

Implementa la formula fornita sul link Woflram Mathworld nel commento di @ 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 per un po 'di chiarezza:

=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 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.