พูดได้หลายภาษา OEIS!


24

คำเตือน: นี่คือแรงบันดาลใจอย่างมากจาก"Polyglot the OEIS!" แต่แก้ไขปัญหาที่นำไปสู่การปิด (ดูหัวข้อผลลัพธ์) และได้รับการโพสต์ซ้ำเพื่อไม่ให้คำตอบไม่ถูกต้อง

บทนำ

เราทุกคนรู้และชื่นชอบสารานุกรมออนไลน์ของลำดับจำนวนเต็ม ( OEIS ) แล้วถ้าเราทำซีเควนซ์ออฟไลน์ที่น่าสนใจออกมาล่ะ? นั่นจะเป็นเรื่องง่ายเกินไปใช่มั้ยและคุณจะเลือกลำดับอย่างไรกับอินเทอร์เฟซมาตรฐานของเรา! ไม่เราต้องการวิธีแก้ปัญหาที่ง่ายกว่า พูดได้หลายภาษา!

อินพุต

nการป้อนข้อมูลของคุณจะเป็นจำนวนเต็มไม่เป็นลบ

เอาท์พุต

ผลลัพธ์ของคุณจะเป็น

  • nรายการ -th ของลำดับ OEIS หรือ
  • nรายการแรกของลำดับ OEIS

คุณอาจใช้ดัชนีเป็นแบบ 1 หรือ 0 ตามที่คุณต้องการ

เพื่อไม่ให้คำถามนี้ซ้ำกับลำดับค่าคงที่ของเครื่องพิมพ์จำนวนเต็มอเนกประสงค์ที่ ถูกแบน สิ่งนี้ควรเพิ่มระดับความยากของการส่งและหลีกเลี่ยงโซลูชันที่ "น่าเบื่อ")

ลำดับไม่คงที่หากมีสมาชิกลำดับที่สองที่ไม่เท่ากัน

อืมความท้าทายอยู่ที่ไหน

คุณต้องใช้หลายภาษาในการทำงานข้างต้น นั่นคือถ้าคุณสนับสนุนภาษา A, B และ C ทั้งหมดจะต้องใช้ลำดับ OEIS ที่แตกต่างกัน การเลือกลำดับไม่ จำกัด ยกเว้นว่าคุณต้องการตัวเลือกที่แตกต่างกันสำหรับทุกภาษา

นั่นคือถ้าคุณเรียกใช้โปรแกรมที่ให้มาในภาษา A ดังนั้นลำดับ X จะถูกสร้างขึ้นหากคุณเรียกใช้โปรแกรมที่ให้มาในภาษา B ลำดับที่ Y จะถูกสร้างขึ้น (ด้วย X! = Y) และหากคุณเรียกใช้โปรแกรมที่ให้มา ในภาษา C จากนั้นจะสร้างลำดับ Z (ด้วย X! = Z && Y! = Z)

ใครชนะ?

คำตอบที่มีลำดับมากที่สุด / คู่ภาษาชนะ tie-breaker แรกคือขนาดของโค้ด (เป็นไบต์) โดยที่ต่ำกว่าจะดีกว่า tie-breaker ที่สองคือเวลาที่ส่งได้เร็วขึ้น

คำ / กฎสุดท้ายใด ๆ

  • คุณต้องประกาศว่าภาษาใดจะสร้างลำดับใด
  • ใช้กฎ I / O มาตรฐาน
  • หากมีการใช้การเข้ารหัสที่แตกต่างกันระหว่างภาษาทั้งสองโปรแกรมจะต้องใช้ลำดับไบต์เดียวกัน
  • การแก้ไขภาษา (Python 2/3) จะนับเป็นภาษาอื่น การใช้งานที่แตกต่างกันของภาษา (เช่นเบราว์เซอร์ JS vs Node.js) ยังนับเป็นภาษาที่แตกต่างกัน
  • ช่องโหว่มาตรฐานใช้

4
โพสต์นี้ได้ทำตามนี้ Meta Q & A
SEJPM

ภาษาต่าง ๆ มีการสร้างดัชนีที่แตกต่างกันได้หรือไม่?
สตีเฟ่น

2
@ ขั้นตอนที่ใช่พวกเขาทำได้
SEJPM

คำตอบ:


16

3 ภาษา (1 ไบต์) - Pyth ( A001477 ) MATL ( A000027 ) Braingolf ( A000217 )

Q

อย่างไร?

Q ทำต่อไปนี้:

  • ใน MATL มันหมายถึง+ 1ดังนั้นโดยพื้นฐานแล้วประเมินinput + 1ว่า

  • ใน Pyth หมายถึงอินพุตดังนั้นมันก็แค่ส่งสัญญาณออก

  • ใน Braingolf มันเป็นแบบในตัวสำหรับตัวเลขสามเหลี่ยม

Mini-พูดได้หลายภาษา

Pythจะถูกแทนที่ด้วยภาษาใด ๆ ต่อไปนี้: GolfScript , Pyke , BrachylogหรือBrain-Flak


1
แน่นอนคุณได้เลือกภาษาที่เหมาะสมสำหรับ +1 นี้: P
HyperNeutrino

1
@HyperNeutrino ฉันเพิ่งจะส่งคำตอบจากที่นั่น แต่ฉันเลือกภาษาที่ดีมากในตอนนั้นดังนั้นใช่: P - ขอบคุณ!
Mr. Xcoder

จำไว้ว่านี่เป็นหลายภาษาไม่ใช่ code-golf: P
Stephen

@ ขั้นตอนที่ฉันคิดว่า 3 มีเหตุผล
Mr. Xcoder

14

10 ภาษา, 122 ไบต์

#|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%:+.

ฉันสามารถเพิ่มพวงได้อีกแน่นอน ดัชนี 1 เว้นแต่ระบุไว้เป็นอย่างอื่น

โปรดทราบว่าฉันอาจไม่ทันสมัยในลิงค์ TIO เมื่อฉันแน่ใจว่าการเปลี่ยนแปลงใหม่ไม่ส่งผลกระทบต่อโปรแกรมเก่า - คุณสามารถทดสอบได้หากคุณต้องการ แต่คัดลอกลิงค์ TIO ใหม่ 10+ ทุกครั้งที่ฉันทำการเปลี่ยนแปลง รู้สึกเหนื่อยเล็กน้อย ฉันจะคัดลอกใหม่ทุก ๆ 5 ปรับปรุงหรือดังนั้น

cQuents v0, A000007

รหัสที่เกี่ยวข้อง: #|A=1:0;

#|Aจับอินพุตและมีไว้สำหรับความคิดเห็นของ Python =1หมายความว่ารายการแรก1, :0หมายความว่าส่วนที่เหลือจะ0ผลลัพธ์ที่ได้ในระยะวันที่ได้รับการป้อนข้อมูลn ncQuents v0 มีข้อผิดพลาด / คุณสมบัติแปลก ๆ ที่เมื่อ;อ่านโทเค็นที่ไม่คาดคิด แต่ถูกต้องเช่นถูกอ่านจะทำให้การแยกวิเคราะห์สิ้นสุด

ลองออนไลน์!

PingPong, A001478

รหัสที่เกี่ยวข้อง: #|A=1:0;~@

ส่งออกผ่านรหัสทางออก 0 การจัดทำดัชนี

#ข้ามอักขระตัวถัดไป =ไม่ทำอะไรที่นี่ 1กด1และ:พิมพ์1ไปที่ STDOUT ดัน0 ไม่ทำอะไรเลย ผลักดันให้การป้อนข้อมูลปรากฏและผลักดัน สิ้นสุด รหัสทางออกคือด้านบนสุดของสแต็ก0);~-n-1@

ลองออนไลน์!

เอเอ็กซ์โอ , A001477

รหัสที่เกี่ยวข้อง: }{\

0 การจัดทำดัชนี }อ่านและดันจำนวนเต็มจาก STDIN (ต้องขึ้นบรรทัดใหม่ด้วยเหตุผลบางอย่าง) {พิมพ์ด้านบนสุดของสแต็กและ\จบโปรแกรม ฉันไม่แน่ใจว่าตัวละครก่อนหน้าทำอะไร แต่ไม่มีอะไรสำคัญในกรณีนี้

ลองออนไลน์!

brainfuck, A000027

รหัสที่เกี่ยวข้อง: ,[.,]

โปรแกรมแมวง่าย ๆ จาก esolangs.org เอาต์พุตอินพุต

ลองออนไลน์!

> <>, A000030

รหัสที่เกี่ยวข้อง: #...;oi

#ทำมิเรอร์และแรปไปทางขวาซึ่งสั่งให้อ่านio;ซึ่งจะแสดงอักขระตัวแรกของอินพุต 0 การจัดทำดัชนี

ลองออนไลน์!

ทับทิมA023443

รหัสที่เกี่ยวข้อง: print (0 and gets.to_i-1...)

0 การจัดทำดัชนี พิมพ์อินพุตลบ 1 0คือความจริงใน Ruby แต่เป็นเท็จใน Python

ลองออนไลน์!

Python 3, A000578

รหัสที่เกี่ยวข้อง: print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()

ตัดออกจากโพสต์ดั้งเดิมของ HyperNeutrino แต่เป็นรูปหลายเหลี่ยมที่รู้จักกันดี quit()สิ้นสุดโปรแกรม

ลองออนไลน์!

Python 2, A000290

รหัสที่เกี่ยวข้อง:

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

#coding:utf-8สิ่งที่จำเป็นสำหรับการทำงานของ Charcoal ฉีกออกจากโพสต์ดั้งเดิมของ HyperNeutrino ด้วย quit()สิ้นสุดโปรแกรม

ลองออนไลน์!

ถ่าน, A001489

รหัสที่เกี่ยวข้อง: ⎚I±N»

0 การจัดทำดัชนี ล้างคอนโซล (Charcoal พิมพ์ ASCII ตามที่เป็นอยู่) และI±Nพิมพ์ค่าลบของอินพุต »เป็นข้อผิดพลาดในการแยกวิเคราะห์และยุติโปรแกรม

ขอบคุณ ASCII-only สำหรับความช่วยเหลือในการแชท

ลองออนไลน์!

คาร์ดินัล, A020725

รหัสที่เกี่ยวข้อง:

 x
x%:+.

เพิ่ม 1 ให้กับอินพุตและกำจัดพอยน์เตอร์พอยน์เตอร์ทั้งหมด

ลองออนไลน์!


ดูเหมือนว่ารหัสทางออกสำหรับ PingPong คือ ToS ซึ่งจะมีค่าเป็น2 ^ 32ซึ่งคาดว่าจะเป็นจำนวนเต็ม 64 บิต
Jonathan Allan

@Janathan ทุกคนเจ๋งขอบคุณ
สตีเฟ่น

คุณต้องการออกด้วยข้อผิดพลาดในการแยกวิเคราะห์จริง ๆ หรือไม่หากรหัส Charcoal อยู่ในตอนท้ายของโปรแกรม
MD XF

@MDXF ไม่ฉันกำลังวางแผนที่จะเพิ่มมากขึ้นในตอนท้าย
สตีเฟ่น

10

5 ภาษา ( 05AB1E , จริง , CJam , วุ้น , MATL ) 7 ไบต์

UD>li)+

ลองออนไลน์!:

  • 05AB1E : ลำดับ A000027 (จำนวนเต็มบวก: a ( n ) = n ; 1-based)
  • ที่จริงแล้ว : ลำดับ A023443 (จำนวนเต็มไม่เป็นลบรวมถึง 1: a ( n ) = n −1; อิง 0)
  • Cjam : ลำดับ A020725 (จำนวนเต็มบวกไม่รวม 1: a ( n ) = n +1; 1-based)
  • เยลลี่ : ลำดับ A005843 (ตัวเลขที่ไม่เป็นลบ: a ( n ) = 2 * n ; อิง 0)
  • MATL : ลำดับ A000290 (สี่เหลี่ยม:( n ) = n 2 ; 1-based) ออกจากพร้อมข้อผิดพลาดหลังจากสร้างเอาต์พุต

7

3 ภาษา: Proton, A000583 ; Python 3, A000578 ; Python 2, A000290

โปรตอนขนาด 49 ไบต์

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

ลองออนไลน์!

Python 3 , 49 ไบต์

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

ลองออนไลน์!

Python 2 , 49 ไบต์

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

ลองออนไลน์!

คำอธิบาย

โปรตอนไม่มี'''...'''เงื่อนไขดังนั้น(''',''')กลายเป็น('' ',' '')สิ่งที่ไม่ก่อให้เกิดปัญหา มันประเมิน''การทำประเมิน(''',''')!=','True

งูหลามจะมีสายเหล่านี้จึง(''',''')เป็นเพียง','เพื่อให้ประเมิน(''',''')!=','False

Python 2 ใช้การแบ่งพื้นสำหรับจำนวนเต็มดังนั้น1/2>0เป็นเท็จใน Python 2 และเป็นจริงใน Python 3


คุณอาจจะสามารถเพิ่ม langs เพิ่มเติมได้หากคุณเปลี่ยนบรรทัด Python ให้เป็น1//1;print(int(input())**(2+(1/2>0)+((''',''')!=',')));quit()แล้วเพิ่มภาษาเช่น JavaScript หลังจากนั้น
Stephen

@ ขั้นตอนแน่นอนว่ามันอาจใช้ได้ขอบคุณ ฉันจะทำอย่างนั้นเมื่อฉันได้รับการเพิ่ม JavaScript: P
HyperNeutrino

6

5 ภาษา, 107 ไบต์

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

Perl: A000035

ใช้=เป็นตัวคั่นหาs///วิธีที่เราสามารถยกเว้นรหัสที่เราไม่ต้องการและการใช้)เป็นตัวคั่นสำหรับq{}วิธีการหลังจากที่printไอเอ็นจีqในภาษาอื่น ๆ ทั้งหมดเราก็สามารถทำงานได้<>โดยตรงโดยไม่ต้องกังวล

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

ลองออนไลน์!

ทับทิม: A001477

ใน Ruby นั้น//คือ/(หารด้วย) /.../(จับคู่ regex) ดังนั้นตราบใดที่ regex ถูกยกเลิกและแปลงเป็นตัวเลขเราสามารถหารได้อย่างปลอดภัย __id__สั้นกว่า.to_s.ordแล้วเราก็มีส่วนที่เหลือของรหัสที่เราไม่ต้องการใน's ชุดqไปgetsและprintกับคนอื่น ๆ ทั้งหมด

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

ลองออนไลน์!

Python 2: A005843

ใช้เคล็ดลับมาตรฐานเพื่อแยกความแตกต่าง 2 จาก 3 และล้อมรอบสิ่งที่เราไม่ต้องการ"""และความคิดเห็น

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

ลองออนไลน์!

Python 3: A008585

ลองออนไลน์!

JavaScript (เบราว์เซอร์ ES6): A000027

ค่อนข้างตรงไปตรงมาสำหรับ JS มันจบลงด้วยความง่ายกว่าที่จะไม่ใช้ของที่มีอยู่printแล้วกลับไปใช้ SpiderMonkey แต่ก็อาจเป็นไปได้เช่นกัน

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


3

6 ภาษา: ตามลำดับ 5/6/7/8/9/10, 44 40 32 ไบต์

ข้ามไป 44 ยังคงเป็นปกติ 44; (

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

ภาพพิมพ์นี้:

  • A010710ใน 5x5x5 ตามลำดับ
  • A010711ใน 6x6x6 ในทางกลับกัน
  • A010712ในทางลูกบาศก์ 7x7x7
  • A010713ในทวน 8x8x8
  • A010714ในทางลูกบาศก์ 9x9x9
  • A010715ในรูปแบบ 10x10x10 ตามลำดับ

คำอธิบาย:

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

ลองออนไลน์! (6x6x6 ตามลำดับ)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.