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

Respuestas:


6

Mathematica, 23 bytes

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

Utiliza la fórmula en la pregunta.


4

JavaScript (ES6), 29 bytes

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

Utiliza una fórmula dada en OEIS.


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.

¡Bienvenido a PPCG y excelente primera respuesta!
mbomb007



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)



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!


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
$ 

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

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



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 ).


@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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.