Số vùng tối đa thu được bằng cách nối n điểm quanh một vòng tròn bằng các đường thẳng


8

Hãy xác định f (n) là số vùng được lấy bằng cách nối n điểm quanh một đường tròn bằng các đường thẳng. Ví dụ: hai điểm sẽ chia vòng tròn thành hai phần, ba thành bốn, như thế này: nhập mô tả hình ảnh ở đây

Hãy chắc chắn rằng khi bạn vẽ các đường, bạn không có giao điểm của hơn hai dòng.

Nhiệm vụ của bạn

Cho một số n , in f (n) .

Các trường hợp thử nghiệm:

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

Bạn có thể xem thêm ở đây .

Sử dụng trình tạo trình tự tích hợp không được phép.

Hãy nhớ rằng, đây là , vì vậy mã có số byte nhỏ nhất sẽ thắng.

Nếu các bạn muốn công thức, đây là:

Câu trả lời:


6

Toán học, 23 byte

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

Sử dụng công thức trong câu hỏi.


4

JavaScript (ES6), 29 byte

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

Sử dụng một công thức được đưa ra trong OEIS.


4

Thạch, 6 byte

5Ḷc@’S

Hãy thử trực tuyến! | Xác nhận trường hợp kiểm tra

Giải trình

Sử dụng công thức 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.

Chào mừng bạn đến với PPCG và câu trả lời đầu tiên tuyệt vời!
mbomb007



3

Java 7,50 47 byte

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

Sử dụng công thức (từ OEIS)



3

R, 25 byte

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

scan()lấy đầu vào ntừ stdin, được truyền vào choosecùng với 0:2*2. Thuật ngữ thứ hai này là 0để 2(ví dụ [0, 1, 2]) nhân với 2, đó là [0, 2, 4]. Kể từ khi chooseđược vector hóa, này tính toán n choose 0, n choose 2, n choose 4, và trả về chúng trong một danh sách. Cuối cùng, sumtrả về tổng của những con số này, đủ đáng ngạc nhiên.

Tôi không nghĩ rằng điều này có thể được đánh gôn hơn nữa nhưng tôi sẽ rất vui khi được chứng minh là sai!


1
Tôi đã được 2 giây từ khi gửi cùng một giải pháp, tốt đẹp!
Billywob


2

J, 9 byte

+4&!+2!<:

Sử dụng công thức C(n-1, 2) + C(n, 4) + n = C(n, 0) + C(n, 2) + C(n, 4) .

Sử dụng

   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

Giải trình

+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




0

Octave , 27 byte

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

Đây là một chức năng ẩn danh.

Hãy thử nó tại Ideone .

Giải trình

Điều này dựa trên công thức OEIS a ( m ) = C ( m 1, 4) + C ( m 1, 3) + ... + C ( m 1, 0), trong đó C là các hệ số nhị thức. Hàm phân phối nhị thức

nhập mô tả hình ảnh ở đây

với k = 4, n = m 1 và p = 1/2 cho 2 m 1 a ( m ).


@Oliver Điều đó có thể sẽ kéo dài hơn, bởi vì đó không phải là chức năng phân phối. Tôi sẽ cần hàm xác suất (khối lượng) và tổng; một cái gì đó như@(m)sum(binopdf(0:2:4,m,.5)*2^m)
Luis Mendo

0

TI-89 cơ bản, 57 byte

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

Trở về thời xưa.


1
Tôi không chắc chắn, nhưng bạn không thể loại bỏ )cái cuối cùng nCr?
Oliver Ni

@Oliver Hi "Không chắc chắn", tôi cũng không chắc. (Idioc nền là một bộ phim tuyệt vời).
Bạch tuộc ma thuật Urn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.