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á:

Oliver Ni
fonte

Respostas:

6

Mathematica, 23 bytes

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

Usa a fórmula na pergunta.

JungHwan Min
fonte
4

JavaScript (ES6), 29 bytes

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

Usa uma fórmula dada no OEIS.

Neil
fonte
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.
jtsalinger
fonte
Bem-vindo ao PPCG e ótima primeira resposta!
mbomb007
3

MATL , 7 bytes

q5:qXns

Experimente online! Ou verifique todos os casos de teste .

Explicação

Usa a fórmula (de OEIS): a ( n ) = C ( n −1, 4) + C ( n −1, 3) + ... + C ( n −1, 0)

q      % Implicit input. Subtract 1
5:q    % Array [0 1 2 3 4]
Xn     % Binomial coefficient, vectorized
s      % Sum
Luis Mendo
fonte
3

Gelatina , 6 bytes

c3ḶḤ¤S

Experimente online! ou verifique todos os casos de teste .

Como funciona

c3ḶḤ¤S  Main link. Argument: n

    ¤   Combine the three links to the left into a niladic chain.
 3        Yield 3.
  Ḷ       Unlength; yield [0, 1, 2].
   Ḥ      Unhalve; yield [0, 2, 4].
c       Combinations; compute [nC0, nC2, nC4].
     S  Sum; return nC0 + nc2 + nC4.
Dennis
fonte
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)

Numberknot
fonte
3

> <> , 27 26 + 3 = 29 bytes

3 bytes adicionados ao sinalizador -v

::::6-**$f8+*f3+-+*f9+,1+n

Experimente online!

Um byte salvo graças a Martin Ender .

Emigna
fonte
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!

rturnbull
fonte
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
$ 
Trauma Digital
fonte
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
milhas
fonte
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
Emigna
fonte
1

Na verdade , 6 bytes

D╣5@HΣ

Experimente online!

Explicação:

D╣5@HΣ
D       decrement input
 ╣      push that row of Pascal's triangle
  5@H   first 5 values
     Σ  sum
Mego
fonte
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 ).

Luis Mendo
fonte
@ 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.

Urna de polvo mágico
fonte
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