Regiões de polígonos regulares


10

Dado um N-gon regular com todas as diagonais desenhadas, quantas regiões as diagonais formam?

Por exemplo, um triângulo regular tem exatamente 1, um quadrado tem exatamente 4, o pentágono tem exatamente 11 e um hexágono tem 24.

  • pontuação é inversamente proporcional ao número de bytes na solução
  • pequenos fatores de correção podem ser adicionados às pontuações com base no tempo de execução
  • a região ao redor do polígono não conta

11
Então ... escrever um programa que retorna este
mob

Respostas:


11

Mathematica 118

Embora existam rotinas bem definidas para calcular o número de regiões em um n-gon regular com todas as diagonais desenhadas , elas são bastante complicadas. Eu pensei que seria divertido adotar uma abordagem de processamento de imagem : se desenharmos o n-gon com suas diagonais, seria possível contar as regiões da imagem desenhada (mais precisamente, da representação rasterizada e binarizada da imagem como uma matriz)?

A seguir, produz e processa uma imagem real de um polígono e determina o número de regiões a partir da imagem rasterizada.

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}

Isso é o que pode ser chamado de solução de um engenheiro. Ele faz o trabalho, mas apenas dentro de algumas condições limitadas. (E é lento: o código acima demorou 4,24 s para ser executado.) A rotina acima funciona corretamente até e inclui um gráfico 14-Complete , mostrado abaixo. Achei isso surpreendente, considerando que algumas das 952 regiões são muito difíceis de ver, mesmo quando a imagem é exibida em 1200 por 1200 pixels.

A imagem abaixo é a imagem antes de ser rasterizada e binarizada.

Gráfico 14 completo


3

Excel, 341 bytes

Implementa a fórmula dada no link Woflram Mathworld no comentário do @ 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 por alguma clareza:

=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 
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.