Número máximo de regiones obtenidas uniendo n puntos alrededor de un círculo por líneas rectas

8

Definamos f (n) como el número máximo de regiones obtenidas uniendo n puntos alrededor de un círculo por líneas rectas. Por ejemplo, dos puntos dividirían el círculo en dos piezas, tres en cuatro, así: ingrese la descripción de la imagen aquí

Asegúrese de que cuando dibuja las líneas, no tiene una intersección de más de dos líneas.

Tu tarea

Dado un número n , imprime f (n) .

Casos de prueba:

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

Puedes ver más aquí .

El uso de generadores de secuencia incorporados no está permitido.

Recuerde, este es el , por lo que gana el código con el menor número de bytes.

Si ustedes quieren la fórmula, aquí está:

Oliver Ni
fuente

Respuestas:

6

Mathematica, 23 bytes

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

Utiliza la fórmula en la pregunta.

JungHwan Min
fuente
4

JavaScript (ES6), 29 bytes

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

Utiliza una fórmula dada en OEIS.

Neil
fuente
4

Jalea, 6 bytes

5Ḷc@’S

Pruébalo en línea! El | Verificar casos de prueba

Explicación

Utiliza la 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
fuente
¡Bienvenido a PPCG y excelente primera respuesta!
mbomb007
3

Jalea , 6 bytes

c3ḶḤ¤S

Pruébalo en línea! o verificar todos los casos de prueba .

Cómo 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
fuente
3

Java 750 47 bytes

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

Utiliza la fórmula (de OEIS)

Nudo numérico
fuente
3

> <> , 27 26 + 3 = 29 bytes

3 bytes agregados para la bandera -v

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

Pruébalo en línea!

Un byte guardado gracias a Martin Ender .

Emigna
fuente
3

R, 25 bytes

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

scan()toma la entrada nde stdin, que se pasa a choosejunto con 0:2*2. Este último término es 0para 2(es decir [0, 1, 2]) multiplicado por 2, lo que es [0, 2, 4]. Dado que choosese vectorizado, este calcula n choose 0, n choose 2,n choose 4 , y regresa en una lista. Finalmente, sumdevuelve la suma de estos números, sorprendentemente.

No creo que esto pueda jugarse más, ¡pero estaría muy feliz de que me demuestren lo contrario!

rturnbull
fuente
1
Estuve a 2 segundos de enviar la misma solución, ¡bien!
Billywob
2

dc, 21

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

Versión de RPN de la respuesta de @ Neil .

Prueba de salida:

$ 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
fuente
2

J, 9 bytes

+4&!+2!<:

Usa la 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

Explicación

+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
millas
fuente
2

05AB1E , 6 bytes

2Ý·scO

Pruébalo en línea!

Explicación

Implementación directa de la 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
fuente
0

Octava , 27 bytes

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

Esta es una función anónima.

Pruébalo en Ideone .

Explicación

Esto se basa en la fórmula OEIS a ( m ) = C ( m −1, 4) + C ( m −1, 3) + ... + C ( m −1, 0), donde C son coeficientes binomiales. La función de distribución binomial.

ingrese la descripción de la imagen aquí

para k = 4, n = m −1 y p = 1/2 da 2 m −1 a ( m ).

Luis Mendo
fuente
@Oliver Eso probablemente terminaría siendo más largo, porque entonces no es la función de distribución. Necesitaría la función de probabilidad (masa) y la suma; algo así como@(m)sum(binopdf(0:2:4,m,.5)*2^m)
Luis Mendo el
0

TI-89 Basic, 57 bytes

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

Retroceso a los viejos tiempos.

Urna de pulpo mágico
fuente
1
No estoy seguro, pero ¿no puedes eliminar )el último nCr?
Oliver Ni
@ Oliver Hola "No estoy seguro", tampoco estoy seguro. (La idiocracia es una gran película).
Urna mágica de pulpo