Polyglot các OEIS (không đổi)!


24

Tuyên bố miễn trừ trách nhiệm: Điều này được truyền cảm hứng mạnh mẽ bởi "Polyglot the OEIS!" nhưng khắc phục sự cố dẫn đến đóng cửa (xem phần đầu ra) và được đăng lại để không làm mất hiệu lực câu trả lời.

Giới thiệu

Chúng ta đều biết và yêu thích bách khoa toàn thư trực tuyến về các chuỗi số nguyên ( OEIS ). Vậy điều gì sẽ xảy ra nếu chúng ta tạo ra một phiên bản ngoại tuyến của các chuỗi thú vị? Chà, điều đó thật quá dễ dàng, phải không và làm thế nào để bạn chọn một chuỗi với giao diện chuẩn của chúng tôi!? Không. Chúng tôi cần một giải pháp dễ dàng hơn cho việc này. Một đa âm!

Đầu vào

Đầu vào của bạn sẽ là một số nguyên không âm n.

Đầu ra

Đầu ra của bạn sẽ là

  • Mục nthứ-thứ tự của chuỗi OEIS HOẶC
  • Các nmục đầu tiên của chuỗi OEIS.

Bạn có thể lấy chỉ mục là 1 dựa trên hoặc 0 dựa trên tùy thích.

Để không biến câu hỏi này thành một bản sao của trình tự hằng số nguyên của máy in đa năng bị cấm. Điều này cũng sẽ làm tăng mức độ khó của bài nộp và tránh các giải pháp "nhàm chán";)

Một chuỗi là không hằng nếu tồn tại hai thành viên chuỗi không bằng nhau.

Uhm, vậy Thử thách ở đâu?

Bạn phải polyglot các chức năng trên. Đó là nếu bạn hỗ trợ các ngôn ngữ A, B và C, tất cả phải thực hiện các trình tự OEIS khác nhau. Sự lựa chọn trình tự không bị giới hạn ngoại trừ việc bạn cần những ngôn ngữ khác nhau cho tất cả các ngôn ngữ.

Nghĩa là, nếu bạn chạy chương trình được cung cấp bằng ngôn ngữ A, thì chuỗi X sẽ được tạo, nếu bạn chạy chương trình được cung cấp bằng ngôn ngữ B, thì chuỗi Y sẽ được tạo (với X! = Y) và nếu bạn chạy chương trình được cung cấp trong ngôn ngữ C, chuỗi Z sẽ được tạo (với X! = Z && Y! = Z).

Ai thắng?

Câu trả lời với các cặp trình tự / ngôn ngữ nhất sẽ thắng. Bộ ngắt kết nối đầu tiên là kích thước mã (tính bằng byte) với mức thấp hơn là tốt hơn. Tie-breaker thứ hai là thời gian nộp với trước đó là tốt hơn.

Bất kỳ từ / quy tắc cuối cùng?

  • Bạn phải khai báo ngôn ngữ nào sẽ tạo ra chuỗi nào.
  • Quy tắc I / O tiêu chuẩn được áp dụng.
  • Nếu các mã hóa khác nhau được sử dụng giữa các ngôn ngữ, cả hai chương trình phải sử dụng cùng một chuỗi byte.
  • Ngôn ngữ (Python 2/3) sửa đổi làm tính là ngôn ngữ khác nhau. Các cách triển khai khác nhau của một ngôn ngữ (như Trình duyệt JS so với Node.js) cũng được tính là các ngôn ngữ khác nhau.
  • Tiêu chuẩn áp dụng.

4
Bài này đã được thực hiện theo Meta Q & A này .
SEJPM

Các ngôn ngữ khác nhau có thể lập chỉ mục khác nhau?
Stephen

2
@StepHen vâng họ có thể.
SEJPM

Câu trả lời:


16

3 ngôn ngữ (1 byte) - Pyth ( A001477 ), MATL ( A000027 ), Braingolf ( A000217 )

Q

Làm sao?

Q thực hiện như sau:

  • Trong MATL, nó có nghĩa là + 1, vì vậy về cơ bản nó đánh giá input + 1.

  • Trong Pyth, nó có nghĩa là đầu vào, vì vậy nó chỉ xuất ra đầu vào.

  • Trong Braingolf, nó được tích hợp sẵn cho các số tam giác.

Đa sắc

Pyth có thể được thay thế bằng bất kỳ ngôn ngữ nào sau đây: GolfScript , Pyke , Brachylog hoặc Brain-Flak .


1
tốt, bạn chắc chắn đã chọn đúng ngôn ngữ cho ngôn ngữ này +1: P
HyperNeutrino

1
@HyperNeutrino Tôi mới chuyển câu trả lời của mình từ đó, nhưng tôi đã chọn ngôn ngữ rất tốt sau đó, vì vậy yeah: P - Cảm ơn!
Ông Xcoder

Hãy nhớ rằng, đây là số ngôn ngữ, không phải mã-golf: P
Stephen

@StepHen Mình nghĩ 3 là hợp lý.
Ông Xcoder

14

10 ngôn ngữ, 122 byte

#|A=1:0;~@}{\,[.,];oi
#coding:utf-8
print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()#⎚I±N»
# x
#x%:+.

Tôi chắc chắn có thể thêm một bó nhiều hơn. 1 - được lập chỉ mục trừ khi có quy định khác.

Lưu ý rằng tôi có thể không cập nhật các liên kết TIO khi tôi chắc chắn những thay đổi mới hơn không ảnh hưởng đến các chương trình cũ hơn - bạn có thể kiểm tra chúng nếu bạn muốn, nhưng sao chép hơn 10 liên kết TIO mới mỗi khi tôi thay đổi bị mệt mỏi sau một chút. Tôi sẽ sao chép những cái mới sau mỗi 5 bản cập nhật.

cQuents v0, A000007

Mã liên quan: #|A=1:0;

#|Abắt đầu vào và có ý kiến ​​cho Python. =1có nghĩa là mục đầu tiên 1, :0có nghĩa là phần còn lại là 0, nđưa ra thuật ngữ đầu vào thứ nhất n. cQuents v0 có một lỗi / tính năng kỳ lạ mà khi một mã thông báo bất ngờ nhưng hợp lệ, chẳng hạn như ;, được đọc, nó sẽ khiến việc phân tích cú pháp kết thúc.

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

PingPong, A001478

Mã liên quan: #|A=1:0;~@

Đầu ra thông qua mã thoát. Chỉ số 0.

#bỏ qua char tiếp theo =không có gì ở đây 1đẩy 1:in 1ra STDOUT. 0đẩy 0. )Không lam gi cả. ;đẩy đầu vào, ~bật và đẩy -n-1. @chấm dứt. Mã thoát là đỉnh của ngăn xếp.

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

axo, A001477

Mã liên quan: }{\

Chỉ số 0. }đọc và đẩy một số nguyên từ STDIN (yêu cầu theo dõi dòng mới vì một số lý do), {in một đầu ngăn xếp và \kết thúc chương trình. Tôi không chắc những nhân vật trước làm gì, nhưng không có gì quan trọng trong trường hợp này.

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

cân não , A000027

Mã liên quan: ,[.,]

Chương trình mèo đơn giản từ esolangs.org. Đầu ra đầu vào.

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

> <>, A000030

Mã liên quan: #...;oi

#gương và kết thúc ở bên phải, hướng nó để đọc io;, đưa ra ký tự đầu tiên của đầu vào. Chỉ số 0.

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

Ruby, A023443

Mã liên quan: print (0 and gets.to_i-1...)

Chỉ số 0. In dấu trừ đầu vào 1. 0là sự thật trong Ruby, nhưng falsey trong Python.

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

Con trăn 3, A000578

Mã liên quan: print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()

Xé toạc bài đăng gốc của HyperNeutrino, nhưng đó là một polyglot khá nổi tiếng. quit()kết thúc chương trình.

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

Con trăn 2, A000290

Mã liên quan:

#coding:utf-8
print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()

#coding:utf-8là cần thiết cho các công cụ than hoạt động. Đồng thời xé bài viết gốc của HyperNeutrino. quit()kết thúc chương trình.

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

Than, A001361

Mã liên quan: ⎚I±N»

Chỉ số 0. xóa bàn điều khiển (Char than in ASCII như hiện trạng) và I±Nin âm bản của đầu vào. »là một lỗi phân tích cú pháp và chấm dứt chương trình.

Cảm ơn ASCII - chỉ giúp đỡ trong trò chuyện.

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

Đức Hồng Y, A020725

Mã liên quan:

 x
x%:+.

Thêm 1 vào đầu vào và xóa tất cả các con trỏ khác.

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


Có vẻ như mã thoát cho PingPong là ToS, nó bao bọc ở mức 2 ^ 32 như mong đợi của một số nguyên có chữ ký 64 bit.
Jonathan Allan

@Jonathan Allan mát mẻ, cảm ơn.
Stephen

Bạn có thực sự cần phải thoát với lỗi phân tích nếu mã Char than đã ở cuối chương trình không?
MD XF

@MDXF không, tôi đã (đang) lên kế hoạch bổ sung thêm vào cuối
Stephen

10

5 ngôn ngữ ( 05AB1E , Trên thực tế , CJam , Jelly , MATL ), 7 byte

UD>li)+

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

  • 05AB1E : dãy A000027 (số nguyên dương: a ( n ) = n ; dựa trên 1)
  • Trên thực tế : dãy A023443 (số nguyên không âm bao gồm 1: a ( n ) = n 1; dựa trên 0)
  • Cjam : chuỗi A020725 (số nguyên dương không bao gồm 1: a ( n ) = n +1; dựa trên 1)
  • Jelly : dãy A005843 (số chẵn không âm: a ( n ) = 2 * n ; dựa trên 0)
  • MATL : dãy A000290 (hình vuông: a ( n ) = n 2 ; dựa trên 1). Thoát với một lỗi sau khi sản xuất đầu ra.

7

3 ngôn ngữ: Proton, A000583 ; Trăn 3, A000578 ; Con trăn 2, A000290

Proton , 49 byte

print(int(input())**(2+(1/2>0)+((''',''')!=',')))

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

Python 3 , 49 byte

print(int(input())**(2+(1/2>0)+((''',''')!=',')))

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

Python 2 , 49 byte

print(int(input())**(2+(1/2>0)+((''',''')!=',')))

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

Giải trình

Proton không có '''...'''chuỗi, vì vậy (''',''')trở thành ('' ',' ''), mà bằng cách nào đó không gây ra vấn đề. Nó đánh giá '', làm cho (''',''')!=','đánh giá True.

Python không có các chuỗi này, vì vậy (''',''')chỉ là ','để (''',''')!=','đánh giá False.

Python 2 sử dụng phân chia tầng cho số nguyên, do đó, 1/2>0sai trong Python 2 và true trong Python 3.


Bạn có thể có thể thêm một số lang khác nếu bạn biến dòng Python thành 1//1;print(int(input())**(2+(1/2>0)+((''',''')!=',')));quit()và sau đó thêm các ngôn ngữ như JavaScript sau đó
Stephen

@StepHen Chắc chắn, điều đó có thể làm việc, cảm ơn. Tôi sẽ làm điều đó một khi tôi bắt đầu thêm JavaScript: P
HyperNeutrino

6

5 ngôn ngữ, 107 byte

s=1/2;1//2;q=int(input())*([2,3][s>0]);"""/.__id__;'
alert(+prompt()+1);`"""#=;#';q=gets
print(q)#)|<>%2)#`

Perl: A000035

Sử dụng =như một dấu phân cách cho s///phương tiện chúng ta có thể dễ dàng loại trừ mã chúng tôi không muốn, và sử dụng )như là dấu phân cách cho q{}phương tiện sau khi printing qtrong tất cả các ngôn ngữ khác, chúng tôi chỉ có thể làm việc trên <>trực tiếp mà không đáng lo ngại.

s/1...q/i...#/;
print(<>%2)

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

Ruby: A001477

Trong Ruby, //thực sự là /(chia cho) /.../(khớp regex), vì vậy miễn là chấm dứt regex và được chuyển đổi thành một số, chúng ta có thể chia cho nó một cách an toàn. __id__ngắn hơn .to_s.ord, sau đó chúng tôi chỉ chứa phần còn lại của mã mà chúng tôi không muốn trong 's, được đặt qthành getsprintvới tất cả các mã khác.

s=1/2;1//2..."/.__id__;'...';q=gets
print(q)

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

Con trăn 2: A005843

Sử dụng thủ thuật tiêu chuẩn để phân biệt 2 từ 3 và kèm theo những thứ chúng tôi không muốn """và nhận xét.

s=1/2;1//2;q=int(input())*([2,3][s>0]);"""/...`"""
print(q)

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

Con trăn 3: A008585

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

JavaScript (trình duyệt ES6): A000027

Khá đơn giản đối với JS, cuối cùng, việc sử dụng lại printSpiderMonkey trở nên dễ dàng hơn , nhưng điều đó cũng có thể xảy ra.

s=1/2;1//2;q=int(input())*([2,3][s>0]);"""/.__id__;'
alert(+prompt()+1);`"""#=;#';q=gets
print(q)#)|<>%2)#`


3

6 ngôn ngữ: Về cơ bản 5/6/7/8/9/10, 44 40 32 byte

Vượt qua 44 vẫn là 44 thường xuyên (

DDR'DDR$:_0?{R'DDRDDB'%0}!{+00%}

Bản in này:

Giải trình:

DDR'DDR$:_0?{R'DDRDDB'%0}!{+00%}
DDR'DDR                            get top face sum to 2 (all versions)
       $:                          read input and set notepad to it
         _0                        set notepad to input modulo 2
           ?{...........}          if truthy
             R'DDRDD                reset cube
                    B'              set top face to Cubically version number
                      %0            print top face
                         !{....}   if falsy
                           +00      add 2 to notepad twice
                              %     print

Hãy thử trực tuyến! (Về cơ bản 6x6x6)

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.