Hiển thị trình tự OEIS


29

Từ điển bách khoa toàn thư về chuỗi số nguyên (OEIS) là một cơ sở dữ liệu trực tuyến về các chuỗi số nguyên. Nó chứa gần 280000 trình tự quan tâm toán học.

Ví dụ về trình tự:

Nhiệm vụ của bạn là viết một chương trình hoặc chức năng hiển thị càng nhiều chuỗi OEIS càng tốt, với mã nguồn tối đa 100 byte . Chương trình của bạn nên chấp nhận làm đầu vào id chuỗi (không có phần trước Avà số 0) và xuất 20 số đầu tiên trong chuỗi đó.

Bạn không được phép lấy dữ liệu trực tiếp từ trang web của OEIS; tất cả các chuỗi phải được tính bằng mã của bạn.

Chấm điểm

Điểm là số lượng trình tự OEIS mà chương trình có thể hiển thị. Câu trả lời sẽ phải liệt kê ID của các chuỗi được chương trình của họ công nhận.

Thí dụ

Đây là một câu trả lời hợp lệ trong Java 8:

(int a) -> {
    for (int i = 0; i < 20; i++) {
        System.out.println(a==27?i+1:i*i); 
    }
};

Chương trình này có thể hiển thị các số nguyên dương (A000027 - đầu vào 27) và bình phương (A000290 - đầu vào 290), do đó điểm của nó là 2.

chú thích

Vui lòng tránh quét toàn bộ trang web OEIS :-) bạn có thể tải xuống tên chuỗi (khoảng 3 megs) hoặc giá trị chuỗi (khoảng 9 megs). Lưu ý rằng bản tải xuống này nằm trong Thỏa thuận cấp phép người dùng cuối OEIS .


Chúng ta có thể viết nó để nó đứng đầu 0 không?
TrojanByAccident

2
CÁI GÌ! Một thách thức trên OEIS!
JungHwan Min

1
@TrojanByAccident nếu ý tưởng của bạn là kết nối với OEIS, điều đó không được phép trên PPCG
Nathan Merrill

@NathanMerrill Tôi không chắc chắn nếu điều đó được tính trong trường hợp này
TrojanByAccident

Chức năng có được phép không?
xnor

Câu trả lời:


25

CJam ( 2182 2780 3034 trình tự)

{:ZA3#:Cb(40-z_!!:B-\+CbB)/)_mqmo:M+:NK{)[N0{N1$_*-@/M@+1$md@M@-}K*]<W%B{X0@{2$*+\}%}*ZB&=}%\C)<f*}

Điều này cung cấp câu trả lời chính xác cho phạm vi bao gồm

  • [A040000, A040003], [A040005, A040008], [A040011, A040013], A040015, [A040019, A040022], A040024, [A040029, A040033], A040035, A040037, [A040041, A040043], A040048, A040052, [A040055, A040057], A040059, A040063, [A040071, A040074], A040077, A040080, [A040090, A040091], [A040093, A040094], A040097, A040099, [A040109, A040111], A040118, A040120, [A040131, A040135], A040137, A040139, [A040142, A040143], A040151, [A040155, A040157], A040166, A040168, [A040181, A040183],[A040185, A040968]
  • [A041006, A041011], [A041014, A042937]
  • A006983, [A011734, A011745], [A023975, A023976], [A025438, A025439], [A025443, A025444], A025466, A025469, [A034422, A034423], A034427, A034429, A034432, A034435, [A034437, A034439], A034441, A034443, A034445, A034447, [A034449, A034459], [A034461, A034462], [A034464, A034469], A034471, A034473, [A034475, A034477], [A034479, A034487], [A034489, A034490], [A034492, A034493], A034495, [A034497, A034512], [A034514, A034516], [A034518, A034523], [A034525, A034582], A036861, A047752, A052375, A055967, A061858, A065687, A066035, A067159, A067168, A070097, A070202, A070204, [A070205, A070206], A072325, A072769, A076142, A082998, A083344, A085974, A085982, A086007, A086015, A089458, A093392, A094382, A105517,A108322, A111855, A111859, [A111898, A111899], A112802, A122180, A129947, A137579, A159708, [A161277, A161280], A165766, A167263, A178780, A178798, A180472, A180601, A181340, A181735, A184946, A185037, A185203, [A185237, A185238], [A185245, A185246], A185255, A185264, A185284, A191928, A192541, A197629, A198255, A200214, A206499, A210632, A212619, [A217148, A217149], A217151, [A217155, A217156], A228953, A230533, A230686, A235044, A235358, A236265, A236417, A236460, A238403, [A243831, A243836], A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492,A280815

Các A040???chuỗi tương ứng với các phân số tiếp tục của căn bậc hai không hợp lý từ sqrt(2)đến sqrt(1000)(với các khoảng trống tương ứng với các khoảng trống xuất hiện trước đó trong OEIS, nhưng được lấp đầy một cách thuận tiện với các chuỗi ngẫu nhiên). Các A041???chuỗi tương ứng với tử số và mẫu số của các phần hội tụ phân số tiếp tục cho các căn bậc hai không hợp lý từ sqrt(6)đến sqrt(1000)(với khoảng cách tương ứng với sqrt(10), tại A005667 and A005668). Các chuỗi khác có các số 0 cho hai mươi giá trị đầu tiên của chúng.

Câu trả lời cổng các yếu tố của hai câu trả lời trước đó của tôi trong GolfScript:

Rất cám ơn xnor vì đã x -> x + round(sqrt(x))sắp xếp chuỗi ánh xạ biểu mẫu đóng ngắn thành giá trị cho sqrt. Khoản tiết kiệm so với tính toán trước đây của tôi (tạo danh sách không bình phương và chọn theo chỉ mục) được cung cấp đủ để có dự phòng hoàn toàn bằng không cho hầu hết các chỉ số ngoài phạm vi.


Có thể hữu ích rằng không phải hình vuông thứ n được đưa ra bởi n + round(sqrt(n))?
xnor

@xnor, cái hay đấy. Tôi đã cố gắng tìm một công thức tuyệt vời với sqrt(n)nó nhưng nó không xảy ra với tôi để làm tròn đến gần nhất chứ không phải xuống. Điều đó mang lại khả năng tiết kiệm ba byte ngay lập tức, không đủ để thêm dự phòng nhưng vẫn giữ hy vọng.
Peter Taylor

35

Chuỗi 2, 875 của Python

print', '.join('%020d'%(10**20/(input()-21004)))

Hoạt động cho 875 trong số các chuỗi 21016 (chữ số thập phân 1/12) đến 21999 (chữ số thập phân 1/995).

Tôi tìm thấy đoạn này với thuật toán tìm kiếm tinh vi của việc gõ một cách khó hiểu trong chuỗi id bằng tay. Một số trình tự trong phạm vi không có định dạng này và xuất hiện ở nơi khác (cảm ơn Mitchell Spector đã chỉ ra điều này). Ví dụ, 21021 không phải là sự mở rộng của 1/17.

Ngay cả khi bị gián đoạn, các chuỗi cho 1 / n vẫn xuất hiện dưới dạng id n+21004. Phần còn lại không được dịch chuyển, nhưng các chuỗi còn thiếu xuất hiện ở nơi khác. Ví dụ: 1/17 xuất hiện dưới dạng 7450 .

Tôi đã đếm những cái phù hợp bằng cách sử dụng một bản sao được tải xuống của các tên trình tự.

Một khối khác nhau cung cấp 848 chuỗi từ 16742 đến 17664 .

n=input()-16729
for i in range(20):k=n/12;a=int((8*k+1)**.5/2+.5);print(a*i+k-a*(a-1)/2)**(n%12+1)

Tất cả đều có hình thức n -> (a*n+b)^c, ở đâu 2≤a≤12, 0≤b<a, 1≤c≤12. Mã trích xuất các hệ số thông qua các số tam giác và mô đun đảo ngược. Như trước đây, không phải tất cả các chuỗi trong phạm vi phù hợp. Nếu hai biểu thức này có thể khớp với 100 byte, nó sẽ cung cấp 1723 chuỗi.

Chunk hứa hẹn:

  • 1929 trình tự khớp: 41006 đến 42394 , tử số và mẫu số của các phép hội tụ phân số tiếp tục.
  • ~ 3300 trình tự khớp: 147999 đến 151254 : số lần đi bộ trên Z ^ 3, nếu bạn có thể tìm thấy cách các danh sách vectơ được sắp xếp.

Dưới đây là các danh mục cho các khối tiềm năng khác, thông qua việc nhóm các tên trình tự OEIS bằng cách xóa tất cả các số (chữ số, dấu trừ, dấu thập phân). Chúng được sắp xếp theo số lần xuất hiện.

3010    Number of walks within N^ (the first octant of Z^) starting at (,,) and consisting of n steps taken from {(, , ), (, , ), (, , ), (, , ), (, , )}
2302    Number of reduced words of length n in Coxeter group on  generators S_i with relations (S_i)^ = (S_i S_j)^ = I
979     Primes congruent to  mod 
969     Numerators of continued fraction convergents to sqrt()
967     Denominators of continued fraction convergents to sqrt()
966     Continued fraction for sqrt()
932     Decimal expansion of /
894     Duplicate of A
659     Partial sums of A
577     Divisors of 
517     Inverse of th cyclotomic polynomial
488     Expansion of /((x)(x)(x)(x))
480     Decimal expansion of th root of 
471     Number of nX  arrays with each element x equal to the number its horizontal and vertical neighbors equal to ,,,, for x=,,,,
455     First differences of A
448     Decimal expansion of log_ ()
380     Numbers n such that string , occurs in the base  representation of n but not of n+
378     Erroneous version of A
375     Numbers n such that string , occurs in the base  representation of n but not of n
340     Numbers n with property that in base  representation the numbers of 's and 's are  and , respectively

35 trình tự:

c=input()
for n in range(20):print[(c-1010)**n,(c-8582)*n][c>2e3]

Hoạt động từ 8585 (bội số của 3) đến 8607 (bội số của 25) và 1018 (sức mạnh của 8) đến 1029 (sức mạnh của 19). Thuận tiện, đây là tất cả trong một khối theo thứ tự id.

Điều này chỉ sử dụng 65 trong số 100 byte được phép và chưa được đánh gôn hoàn toàn, vì vậy tôi sẽ tìm một đoạn tuyệt vời khác.


haha, một trong những tốt đẹp
Maltysen

đồng thời, ngắn hơn:lambda n:range(0,(n-8582)*20,n-8582)
Maltysen

@Maltysen Spec nói chương trình, vì vậy tôi đã đi với nó. Tôi sẽ hỏi.
xnor

2
Ý tưởng hay, nhưng tôi không nghĩ rằng phạm vi 21016-21999 hoàn toàn bao gồm các đối ứng. Ví dụ: A21021 là 1, 33, 727, 13365, 221431, 3428733, ..., không phải là các chữ số thập phân của 1/17. Tôi đã không kiểm tra xem chuỗi nào là đối ứng và chuỗi nào không.
Spector Mitchell

1
@xnor Tuy nhiên, nhiều trận đấu bạn nhận được, bạn có thể kết hợp nó với câu trả lời của tôi để thêm một số khác vào số đếm: nếu đầu vào không nằm trong phạm vi 21016-21999, đầu ra 20 0 '. (Không ai trong số 252 trình tự của tôi nằm trong phạm vi đó.)
Mitchell Spector

29

Bash + coreutils, 252 trình tự

yes 0|head -20

Hãy thử trực tuyến!

A, hoạt động trên các trình tự 252 OEIS: A000004, A006983, A011734, A0117, A0117 A A A034 1 A034495, A034495A0345 A A A4545 A A A A, A, A, Ail A, A A243831, A243832, A243833, A243834, A243835, A243836, A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492, A280915, A19 A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492, A280815, A19 A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492, A280815


4
Heh, ý tưởng dễ thương!
Jonathan Allan

12

Python (có sympy), 144 146 chuỗi

import sympy
f=lambda a,M=16627:[int(c)for c in str(sympy.log((a<M)*46.5+4+a-M).n(20))if'.'<c][-20:]

Hàm này fhoạt động cho 146 chuỗi A016578 đến A016723 .

Tất cả trong số này là kết quả của khai thác thử nghiệm tại repl.it .

Bao gồm 49 chuỗi A016578 đến A016626 là các phần mở rộng thập phân của log (3/2), log (5/2), log (7/2), ..., log (99/2).

Bao gồm 97 chuỗi A016627 đến A016723 là các phần mở rộng thập phân của log (4), log (5), log (6), ..., log (100).

Đầu tiên hai của 49 bắt đầu tại nơi thập phân đầu tiên kể từ khi giá trị log cho họ ít hơn 1 , vì vậy [-20:]có những dấu 20 chữ số thập phân của kết quả của các cuộc gọi đến ...n(20)mà được 20 con số đáng kể. Các if'.'<cbộ lọc đưa ra ký tự vị trí thập phân và chuyển int(c)từng ký tự chữ số còn lại thành một số nguyên (mặc dù có thể không cần thiết).


10

Jelly, 1127 1975 trình tự

- điều này hiện kết hợp các phát hiện của xnorMitchell Spector , nhưng vẫn còn một số chỗ cho sự tăng trưởng ở mức 78 byte. Đi cho họ một số tín dụng!

0x20
_21004µȷ20:DU¢oU
20Ḷ×⁸+µ*þ12
11R‘µẋ`€F$ç"Ḷ€F$;/
_108ị¢

“æÑØ‘×ȷ3¤>J×$S‘µĿ

Dùng thử trực tuyến!

Trình tự 1975 là:

  • con số 252 bắt đầu bằng hai mươi số không (hành vi cho đầu vào bên ngoài [16000,21999]);
  • các chuỗi 848 nằm trong phạm vi từ 16742 đến 17664 phù hợp với (a*n+b)**ccông thức (hành vi cho đầu vào [16000,17999]); và
  • 875 trình tự nằm trong phạm vi 21016 đến 21999 phù hợp với việc mở rộng thập phân của 1/n(hành vi cho đầu vào [18000,21999]).

Làm sao?

0x20 - Link 1, TwentyZeros: no arguments
0    - zero
  20 - twenty
 x   - repeat

_21004µȷ20:DU¢oU - Link 2, DecimalExpansionOfReciprocal: oeisIndexNumber
      µ          - monadic chain separation
       ȷ20       - 1e20
_21004           - subtract 21004 from oeisNumber to get the n value
          :      - integer division, i.e. 1e20 // n
           D     - decimal list
            U    - reverse
             ¢   - call last link (1) as a nilad, i.e. get twenty zeros
              o  - logical or, i.e. pad the right of the reversed list to twenty with zeros
               U - reverse again

20Ḷ×⁸+µ*þ12 - Link 3, BlockOf12abcFormulaResults: a, b
20Ḷ         - lowered range of 20 [0,1,...,19] i.e. the values of n in (a*n+b)**c
    ⁸       - left argument, a
   ×        - multiply
     +      - add b
      µ     - monadic chain separation
        þ12 - outer product with [1,2,...,12] of... i.e. the values of c in (a*n+b)**c
       *    -     exponentiation

11R‘µẋ`€F$ç"Ḷ€F$;/ - link 4, AllabcFormulaResults: no aguments
11R                - range of 11 [1,2,...,11]
   ‘               - increment   [2,3,...12] i.e. the values of a in (a*n+b)**c
    µ              - monadic chain separation
         $         - last two links as a monad
     ẋ`€           - repeat list with repeated arguments for €ach [[2,2],[3,3,3],...,[12,12,12,12,12,12,12,12,12,12,12,12]]
        F          - flatten into one list
               $   - last two links as a monad
            Ḷ€     - lowered range of €ach [[0,1],[0,1,2],...,[0,1,2,3,4,5,6,7,8,9,10,11]]
              F    - flatten into one list
          ç"       - zip with (") last link (3) as a dydad (ç) i.e. get all the results
                 / - reduce with
                ;  - concatenation i.e. make the list of lists of lists one list of lists.

_108ị¢ - Link 5, abcFormulaResult: oeisIndexNumber
_108   - subtract 108 from the oeisNumber (indexes in Jelly are modular and there are 924 entries, this is shorter than _16740)
     ¢ - call last link (4) as a nilad
    ị  - index into i.e. get the one relevant result of 20 terms

 - Link 6, an empty link (cheaper in bytes than the %6 alternative in the main link)

“æÑØ‘×ȷ3¤>J×$S‘µĿ - Main link: oeisIndexNumber           e.g. 1-15999; 16000-17999; 18000-21999; 22000+
        ¤         - nilad followed by link(s) as a nilad
“æÑØ‘             - codePage indexes [22,16,18]
      ȷ3          - 1e3
     ×            - multiply [22000,16000,18000]
         >        - greater than (vectorises)            e.g. [1,1,1]; [1,0,1];     [1,0,0];     [0,0,0]
            $     - last two links as a monad
          J       - range(length) [1,2,3]
           ×      - multiply                             e.g. [1,2,3]; [1,0,3];     [1,0,0];     [0,0,0]
             S    - sum                                  e.g. 6;       4;           1;           0
              ‘   - increment                            e.g. 7;       5;           2;           1
               µ  - monadic chain separation
                Ŀ - call link(index) as a monad with the oeisIndexNumber
                        link indexing is 1-based and modular so 7 calls link 1
              ><        hence the empty link 6 replacing a %6 here

8

Toán học, 39 173 189 trình tự

If[l=0~Range~19;#<4^7,l,If[#<3^9,#&@@RealDigits[Log[j=16627;#-j+If[#<j,49.5,4]],10,20],#-22956-l]]&

Lấy cảm hứng từ câu trả lời của Jonathan Allan .

Hoạt động cho:

  • 1477 , 2837 , 48308554 (20 điều khoản đầu tiên trong số này là {0, 1, 2, ... , 19})
  • 16578 đến 16626 (mở rộng thập phân của nhật ký (3/2), mở rộng thập phân của nhật ký (5/2), ... mở rộng thập phân của nhật ký (99/2))
  • 16627 đến 16723 (mở rộng thập phân của nhật ký (4), mở rộng thập phân của nhật ký (5), ... mở rộng thập phân của nhật ký (100))
  • 22958 để 22.996 (2-n, 3-n, ... 40-n)

6

CJam, 1831 trình tự

{168680-:Zz1320b900b48md:R;H+:QB+2*,:!1_tQWtQ)WtK{[WQW*_(]+1$f=[1R2+R~R4+*2/WR-X$-].*1b+}/J~>ZW>f*}

Điều này cung cấp đầu ra chính xác cho 199 chuỗi bắt đầu 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0và tất cả các chuỗi trong phạm vi bao gồm [A168680, A169579][A170000, A170731]. Phần lớn của nó liên quan đến hai phạm vi đó, với một dự phòng cho tất cả các số 0 trước khi bắt đầu phạm vi đầu tiên.

Hai phạm vi trong câu hỏi có dạng

nPSi(Si)2=(SiSj)Q=I

P350Q1750(t1)

tQ+1+tQt112(P2)(P1)tQ+112(P2)(P+1)tQ+(P1)t1
R=P+3

1

Mẻ, 62 trình tự

@for /l %%i in (1,1,20)do @set/a"n=(n=22956-%1)*(n>>=16)+%%i*(n|%1-8582)"&call echo %%n%%

Chỉ thực hiện một khối các chuỗi là khó, nhưng tôi đã quản lý hai trong 89 byte! Giải thích: Đối với tham số %18585-8607, 22956-%1>>16trả về 0, làm cho (22956-%1)biểu thức bị bỏ qua và chúng tôi kết thúc nhân biến số vòng lặp với tỷ lệ tương ứng 3-25, trong khi đối với tham số 22958-22996, nó trả về trừ đi một biểu thức khiến biểu thức bị phủ định, trong khi các n|nguyên nhân nhân được thay thế bằng trừ đi một nhân có hiệu quả trừ biến vòng lặp.


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