Hoán đổi trình tự


9

Nhiệm vụ của bạn là viết một số mã tạo ra chuỗi OEIS và chứa tên của chuỗi trong mã ( A______). Đủ dễ dàng phải không? Vâng, đây là cách bắt, mã của bạn cũng phải xuất một chuỗi riêng thứ hai khi tên của chuỗi trong mã được thay đổi thành tên của chuỗi thứ hai.

Đầu ra đầu vào

Mã của bạn có thể là một hàm hoặc chương trình hoàn chỉnh có n thông qua một phương thức nhập chuẩn và xuất ra số hạng thứ n của chuỗi như được lập chỉ mục bởi chỉ mục được cung cấp trên trang OEIS.

Bạn phải hỗ trợ tất cả các giá trị được cung cấp trong các tệp b OEIS cho chuỗi đó, bất kỳ số nào không có trong các tệp b không cần phải được hỗ trợ.

Chấm điểm

Đây là . Điểm của bạn sẽ là số byte trong mã của bạn, với ít byte sẽ tốt hơn.

Thí dụ

Đây là một ví dụ trong Haskell hoạt động cho A000217 và A000290.

f x|last"A000217"=='0'=x^2|1>0=sum[1..x]

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


Để làm rõ: Mã của bạn sẽ hoạt động cho hai chuỗi trong đó đặt tên của chuỗi trong phần đó của mã sẽ xuất ra số của chuỗi đó?
HyperNeutrino

@HyperNeutrino Vâng. Khi tên của chuỗi được thay thế trong nó sẽ thay đổi chức năng của chương trình thành chuỗi thứ hai.
Ad Hoc Garf Hunter

1
Do các chuỗi trong mã phải có các số 0 đứng đầu.
pppery

@ppperry Có nên.
Ad Hoc Garf Hunter

1
Ayêu cầu?
Okx

Câu trả lời:


8

JavaScript (ES6), 16 15 byte

n=>4&~0xA000004

Hoạt động với A000004 (tất cả 0) và A010709 (tất cả 4s).

Giải pháp 17 byte trước đây hoạt động với A010850 đến A010859, bao gồm:

n=>~-0xA010850%36

Giải pháp 25 byte trước đây hoạt động với A010850 đến A010871, bao gồm:

n=>"A010850".slice(5)-39

Điều này chỉ thể hiện (Tôi không biết rõ về OEIS để thấy điều này thông minh đến mức nào: P)
TheLethalCoder

Strange - hai câu trả lời bắt đầu ở mức 25 byte và cả hai đều được chơi thành 17 byte trong một phút
pppery

@ppperry Heh, nhưng tôi có thể chuyển câu trả lời của bạn và nó sẽ chỉ có 15 byte ...
Neil

JS gắn liền với Jelly ?! Thực hiện rất độc đáo
Shaggy

@Shaggy Không; một câu trả lời thạch ngắn mới đã được đăng.
pppery



3

cQuents , 16 byte

=A000007//5#|A:0

Hãy thử trực tuyến! , A000007 ,1,0,0,0,0...

=A000004//5#|A:0

Hãy thử trực tuyến! , A000004 ,0,0,0,0,0...

Giải trình

                    Implicit input A
=A000007            First item in the sequence equals A * 7
        //5                                                 intdiv 5 = 1
           #|A      n equals A
              :     Mode : (sequence): output nth item (1-based)
               0    Rest of the sequence is 0

                    Implicit input A
=A000004            First item in the sequence equals A * 4
        //5                                                 intdiv 5 = 0
           #|A      n equals A
              :     Mode : (sequence): output nth item (1-based)
               0    Rest of the sequence is 0

Cảm ơn Conor O'Brien cho 4//5 = 07//5 = 1.

Nếu thông số kỹ thuật linh hoạt hơn, nó sẽ O7A$O4A$.



2

dc , 13 byte

Chỉnh sửa: Rõ ràng OEIS liệt kê các quyền hạn từ 0thứ đến 30thứ - Tôi vừa thực hiện tìm kiếm trên các chuỗi này và hóa ra 13giải pháp byte gốc là mạnh nhất. Nhưng tôi đã tìm thấy một giải pháp khác cho 1nhiều byte hơn, hoạt động cho 9các chuỗi.

Giải pháp cho A000012 (chuỗi 1 không đổi):

?A000012 4%^p

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

Giải pháp cho A001477 (số nguyên không âm):

?A001477 4%^p

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

Giải pháp cho A000290 (chuỗi hình vuông hoàn hảo):

?A000290 4%^p

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

Ungolfed / Giải thích

Những giải pháp này sử dụng thực tế là dcdiễn giải Anhư 10, vì vậy A001477trở thành giá trị 10001477. Hơn nữa, nó khai thác rằng các trình tự là n^0, n^1n^2trùng khớp với 10000012 % 4 == 0, 10001477 % 4 == 110000290 % 4 == 2.

Vì vậy, các chuỗi này là xyz(n) = n ^ (xyz % 4).

Command          Description          Example (3) 
?              # Push the input       [3]
 A000290       # Push sequence name   [3,10000290]
         4%    # Top %= 4             [3,2]
           ^   # Pop x,y & push y^x   [9]
            p  # Print the top        [9]

Giải pháp 14 byte cho 9 chuỗi

Ý tưởng vẫn như vậy, lần này chúng ta cần thực hiện một % 97, để có được sức mạnh phù hợp - nó hoạt động cho các chuỗi A010801 , A010802 , A010804 , A010804 , A010805 , A010806 , A010807 , A010809A010809 (đây là các chuỗi n^13, .. ., n^21).

Đây là cái đầu tiên:

?A010801 97%^p

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


1
+1 để hỗ trợ nhiều hơn hai chuỗi!
Neil

1

Python 2, 25 17 byte

print'A000012'[5]

Hoạt động cho A000004 và A000012. (đầu vào bị bỏ qua vì các chuỗi là tất cả các điều khoản không đổi).


1

Befunge 98, 10 byte

#A000012$q

Cũng hoạt động cho A000004. Đầu ra bằng mã thoát.


1

Thạch , 17 byte

“A000578”OS%⁵ạ6*@

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

“A000578”OS%⁵ạ6*@  Main link
“A000578”          String
         O         Codepoints
          S        Sum (364 for A000290, 373 for A000578)
           %⁵      Modulo 10 (4 for A000290, 3 for A000578)
             ạ6    Absolute Difference with 6 (2 for A000290, 3 for A000578)
               *@  [left argument] ** [result of last link (right argument)]

Cũng hoạt động với A000290


Tốt công việc sử dụng trình tự không liên tục.
admBorkBork

1

PowerShell , 23 byte

+(0xA000012-eq160mb+18)

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

Sử dụng A000012 (chuỗi tất cả các chuỗi) và A000004 (chuỗi tất cả các số không).

Tận dụng một số thủ thuật gọn gàng. Chúng tôi sử dụng 0xnhư toán tử thập lục phân trên chuỗi cung cấp cho chúng tôi 167772178. Đó là so với xem nếu nó -equal để 160mb+18sử dụng các mbnhà điều hành ( 160mb167772160). Kết quả Boolean đó sau đó được chọn là một int với +đầu ra thích hợp 1hoặc 0. Lưu ý rằng bất kỳ chuỗi nào trong mã ngoài A000012 sẽ dẫn đến kết quả 0đầu ra.


1

Neim , 10 9 byte

A000012ᛄ>

Giải trình:

A            Push 42
 000012      Push 4
 or
 A007395     Push 7395
        ᛄ     Modulo 2
         >    Increment

A000012 (tất cả những người) và A007395 (tất cả các twos)

Một hàm lấy đầu vào trên đỉnh của ngăn xếp và để đầu ra ở trên cùng của ngăn xếp.

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


0

Gaia , 9 byte

A000012₉/

Hoạt động với A000012A000004 .

Hãy thử A000012!

Hãy thử A000004!

Giải trình

A          Undefined (ignored)
 000012    Push 12
       ₉   Push 9
        /  Integer division, results in 1


A          Undefined (ignored)
 000004    Push 4
       ₉   Push 9
        /  Integer division, results in 0

Tại sao mọi người cứ đăng A00004 và A00012?
pppery

@ppperry A000004 là dãy số 0 và A000012 là dãy số. Đơn giản chỉ cần chia số sàn cho 9 và đưa ra kết quả mãi mãi.
Kỹ sư Toast






0

Husk , 20 byte

Điều này trả về một chuỗi thú vị hơn một chút, một lần nữa các giải pháp được đưa ra 1.

Điều này hoạt động cho A000040 (số nguyên tố):

!!i→"A000040"e:0İfİp

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

Và cái này cho A000045 (số Fibonacci):

!!i→"A000045"e:0İfİp

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

Giải trình

Điều này sử dụng thực tế là chữ số cuối cùng của các tên chuỗi có tính chẵn lẻ khác nhau:

                      -- implicit input N
             e        -- construct a list with:
              :0İf    --   list of Fibonacci numbers (prepend 0)
                  İp  --   list of the prime numbers
  i→"Axxxxx?"         -- get the last character and convert to number,
 !                    -- use it as modular index (0 -> primes, 5 -> Fibonacci)
!                     -- get the value at the Nth index

0

AHK , 40 byte

a:=SubStr("A000004",6)//9
Loop
Send %a%,

Đầu ra: 0,0,0,0,0,0,0,0,0,0,0,0,...

a:=SubStr("A000012",6)//9
Loop
Send %a%,

Đầu ra: 1,1,1,1,1,1,1,1,1,1,1,1,...

Đây có thể không phải là mã ngắn nhất nhưng tôi cá rằng đó là cặp chuỗi ngắn nhất chúng ta có thể tìm thấy. A000004 là dãy số 0 và A000012 là dãy số. Đơn giản chỉ cần chia số sàn cho 9 và đưa ra kết quả mãi mãi.


0

QBIC , 28 byte

p=!_s@A000035`,-1|!?:%2+5-p

Điều này chuyển đổi giữa các chuỗi A000034 (1, 2, 1, 2, 1 ...) và A000035 (0, 1, 0, 1, 0, 1 ...)

Giải trình

p=                  Set p to 
  !            !    A numeric representation of
   _s         |     a substring of
     @A000035`      our sequence code (either A0035 or A0034)
     ,-1            taking just one character from the right.
?:%2                PRINT <n> MOD 2 (gives us a either 0 or 1)
    +5-p            Plus 1 for seq A24 (5-4), or plus 0 for A35

0

Husk , 16 byte

Cả hai giải pháp đều được thực hiện 1.

Điều này hoạt động cho A000351 (quyền hạn 5):

!¡*i!6"A000351"1

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

Và cái này cho A000007 ( lũy thừa 0):

!¡*i!6"A000007"1

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

Giải trình

Nó sử dụng các tên A000351 , A000007 chứa chữ số D bên phải ở vị trí 6, sao cho dãy là D^0,D^1,D^2,...:

                  -- implicit input N
   i!6"AxxxxDx"   -- get the right digit D and convert to number,
 ¡*            1  -- iterate (D*) infinitely beginning with 1,
!                 -- extract the value at Nth position

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.