Maximale Anzahl von Regionen, die durch Verbinden von n Punkten um einen Kreis durch gerade Linien erhalten werden


8

Definieren wir f (n) als die axiale Anzahl von Regionen, die durch Verbinden von n Punkten um einen Kreis durch gerade Linien erhalten werden. Zum Beispiel würden zwei Punkte den Kreis in zwei Teile teilen, drei in vier, wie folgt: Geben Sie hier die Bildbeschreibung ein

Stellen Sie sicher, dass Sie beim Zeichnen der Linien nicht mehr als zwei Linien schneiden.

Deine Aufgabe

Bei einer Anzahl n , Druck f (n) .

Testfälle:

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

Sie können hier mehr sehen .

Die Verwendung eingebauter Sequenzgeneratoren ist nicht zulässig.

Denken Sie daran, dies ist , also gewinnt der Code mit der geringsten Anzahl von Bytes.

Wenn ihr die Formel wollt, hier ist sie:

Antworten:


6

Mathematica, 23 Bytes

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

Verwendet die Formel in der Frage.


4

JavaScript (ES6), 29 Byte

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

Verwendet eine in OEIS angegebene Formel.


4

Gelee, 6 Bytes

5Ḷc@’S

Probieren Sie es online aus! | Überprüfen Sie die Testfälle

Erläuterung

Verwendet die OEIS-Formel ((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.

Willkommen bei PPCG und tolle erste Antwort!
mbomb007



3

Java 7,50 47 Bytes

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

Verwendet die Formel (von OEIS)



3

R, 25 Bytes

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

scan()Nimmt die Eingabe nvon stdin, die choosezusammen mit übergeben wird 0:2*2. Dieser letztere Term ist 0zu 2(dh [0, 1, 2]) multipliziert mit 2, was ist [0, 2, 4]. Da choosewird vektorisiert, berechnet daraus n choose 0, n choose 2, n choose 4und kehrt sie in einer Liste an . Gibt schließlich sumüberraschenderweise die Summe dieser Zahlen zurück.

Ich denke nicht, dass dies weiter gespielt werden kann, aber ich würde mich sehr freuen, wenn ich mich als falsch erweisen würde!


1
Ich war 2 Sekunden von der Einreichung der gleichen Lösung, schön!
Billywob


2

J, 9 Bytes

+4&!+2!<:

Verwendet die Formel C(n-1, 2) + C(n, 4) + n = C(n, 0) + C(n, 2) + C(n, 4).

Verwendungszweck

   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

Erläuterung

+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

Probieren Sie es online aus!

Erläuterung

Gerade Implementierung der OEIS-Formel 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

Oktave , 27 Bytes

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

Dies ist eine anonyme Funktion.

Probieren Sie es bei Ideone .

Erläuterung

Dies basiert auf der OEIS-Formel a ( m ) = C ( m - 1, 4) + C ( m - 1, 3) + ... + C ( m - 1, 0), wobei C Binomialkoeffizienten sind. Die Binomialverteilungsfunktion

Geben Sie hier die Bildbeschreibung ein

für k = 4 ergibt n = m - 1 und p = 1/2 2 m - 1 a ( m ).


@Oliver Das würde wahrscheinlich länger dauern, denn dann ist es nicht die Verteilungsfunktion. Ich würde die Wahrscheinlichkeits- (Massen-) Funktion und Summe brauchen; so etwas wie@(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

Rückfall in alte Zeiten.


1
Ich bin nicht sicher, aber können Sie )das letzte nicht entfernen nCr?
Oliver Ni

@Oliver Hallo "Nicht sicher", ich bin auch nicht sicher. (Idiocracy ist ein großartiger Film).
Magic Octopus Urn
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.