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:

Oliver Ni
quelle

Antworten:

6

Mathematica, 23 Bytes

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

Verwendet die Formel in der Frage.

JungHwan min
quelle
4

JavaScript (ES6), 29 Byte

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

Verwendet eine in OEIS angegebene Formel.

Neil
quelle
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.
jtsalinger
quelle
Willkommen bei PPCG und tolle erste Antwort!
mbomb007
3

MATL , 7 Bytes

q5:qXns

Probieren Sie es online aus! Oder überprüfen Sie alle Testfälle .

Erläuterung

Verwendet die Formel (aus 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
quelle
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)

Zahlenknoten
quelle
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!

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

dc, 21

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

RPN- basierte Version von @ Neils Antwort .

Testausgabe:

$ 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
$ 
Digitales Trauma
quelle
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
Meilen
quelle
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
Emigna
quelle
1

Eigentlich 6 Bytes

D╣5@HΣ

Probieren Sie es online aus!

Erläuterung:

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

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

Magische Krakenurne
quelle
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