Número máximo de regiões obtido pela união de n pontos ao redor de um círculo por linhas retas


8

Vamos definir f (n) como o número aximal de regiões obtido pela união de n pontos em torno de um círculo por linhas retas. Por exemplo, dois pontos dividiriam o círculo em duas partes, três em quatro, assim: insira a descrição da imagem aqui

Certifique-se de que ao desenhar as linhas, você não tenha uma interseção com mais de duas linhas.

Sua tarefa

Dado um número n , imprima f (n) .

Casos de teste:

 n | f(n)   
---+-----
 1 |   1
 2 |   2
 3 |   4
 4 |   8
 5 |  16
 6 |  31
 7 |  57
 8 |  99
 9 | 163

Você pode ver mais aqui .

O uso de geradores de sequência internos não é permitido.

Lembre-se, isso é , portanto o código com o menor número de bytes vence.

Se vocês querem a fórmula, aqui está:

Respostas:


6

Mathematica, 23 bytes

Tr@Binomial[#,{0,2,4}]&

Usa a fórmula na pergunta.


4

JavaScript (ES6), 29 bytes

n=>(((n-6)*n+23)*n/6-3)*n/4+1

Usa uma fórmula dada no OEIS.


4

Gelatina, 6 bytes

5Ḷc@’S

Experimente online! | Verificar casos de teste

Explicação

Usa a fórmula OEIS ((n-1)C4 + (n-1)C3 + ... + (n-1)C0).

5Ḷc@’S    Main link.  Args: n

5         Yield 5.
 Ḷ        Lowered range: yield [0,1,2,3,4].
    ’     Yield n-1.
   @      Swap operands of the preceding dyad, 'c'.
  c       Combinations: yield [(n-1)C0, (n-1)C1, (n-1)C2, (n-1)C3, (n-1)C4].
     S    Sum: return (n-1)C0 + (n-1)C1 + (n-1)C2 + (n-1)C3 + (n-1)C4.

Bem-vindo ao PPCG e ótima primeira resposta!
mbomb007



3

Java 7,50. 47 bytes

int c(int n){return(n*n*(n-6)+23*n-18)*n/24+1;}

Usa a fórmula (do OEIS)



3

R, 25 bytes

sum(choose(scan(),0:2*2))

scan()pega a entrada nde stdin, que é passada choosejunto com 0:2*2. Este último termo é 0a 2(ou seja [0, 1, 2]) multiplicado por dois, o que é [0, 2, 4]. Desde chooseé vetorizado, Isso calcula n choose 0, n choose 2, n choose 4, e retorna-los em uma lista. Finalmente, sumretorna a soma desses números, surpreendentemente.

Eu não acho que isso possa ser jogado ainda mais, mas eu ficaria muito feliz em provar que está errado!


1
Eu estava a 2 segundos de enviar a mesma solução, legal!
Billywob #

2

dc, 21

?ddd6-*23+*6/3-*4/1+p

RPNVersão do resposta de @ Neil .

Saída de teste:

$ for i in {1..9}; do dc -e "?ddd6-*23+*6/3-*4/1+p" <<< $i; done
1
2
4
8
16
31
57
99
163
$ 

2

J, 9 bytes

+4&!+2!<:

Usa a fórmula C(n-1, 2) + C(n, 4) + n = C(n, 0) + C(n, 2) + C(n, 4).

Uso

   f =: +4&!+2!<:
   (,.f"0) >: i. 10
 1   1
 2   2
 3   4
 4   8
 5  16
 6  31
 7  57
 8  99
 9 163
10 256
   f 20
5036

Explicação

+4&!+2!<:  Input: integer n
       <:  Decrement n
     2     The constant 2
      !    Binomial coefficient C(n-1, 2)
 4&!       Binomial coefficient C(n, 4)
    +      Add them
+          Add that to n and return

2

05AB1E , 6 bytes

2Ý·scO

Experimente online!

Explicação

Implementação direta da fórmula OEIS c(n,4) + c(n,2) + c(n,0)

2Ý       # range: [0,1,2]
  ·      # multiply by 2: [0,2,4]
   s     # swap list with input
    c    # combinations
     O   # sum



0

Oitava , 27 bytes

@(m)binocdf(4,m-1,.5)*2^m/2

Esta é uma função anônima.

Experimente em Ideone .

Explicação

Isso é baseado na fórmula OEIS a ( m ) = C ( m -1, 4) + C ( m -1, 3) + ... + C ( m -1, 0), onde C são coeficientes binomiais. A função de distribuição binomial

insira a descrição da imagem aqui

para k = 4, n = m -1 e p = 1/2 dá 2 m -1 a ( m ).


@ Oliver Isso provavelmente acabaria sendo mais longo, porque então não é a função de distribuição. Eu precisaria da função de probabilidade (massa) e soma; algo parecido com@(m)sum(binopdf(0:2:4,m,.5)*2^m)
Luis Mendo

0

TI-89 Basic, 57 bytes

:Def a(a)=Func
:Return nCr(n,0)+nCr(n,2)+nCr(n,4)
:End Func

Retrocesso aos velhos tempos.


1
Não tenho certeza, mas você não pode remover )o último nCr?
Oliver Ni

@ Oliver Oi "Não tenho certeza", eu também não tenho certeza. (A idiocracia é um ótimo filme).
Magic Octopus Urn
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.