ช่วงเวลาที่มีการบิด


13

หมายเหตุ: นี่เป็นแรงบันดาลใจอย่างมากจากคำถามนี้

งาน:

งานของคุณคือการสร้างnนายกที่สำคัญเมื่อตัวละครในโปรแกรมของคุณแต่ละnครั้งซ้ำแล้วซ้ำอีกในสถานที่

สมมติว่าโปรแกรมของคุณคือ:

Derp

2ตัวละครในที่นั่นทุกซ้ำแล้วซ้ำอีกครั้งดังนั้นจึงควรเอาท์พุท

เมื่อตัวละครทุกตัวถูกทำซ้ำอย่างเช่น:

DDeerrpp

นี้ควรสร้างที่สำคัญ 2 3ซึ่งเป็น

รายละเอียด:

  • โปรแกรมของคุณจะต้องไม่ยอมรับอินพุตและแสดงผลไพรม์ที่เกี่ยวข้อง
  • โปรแกรมของคุณจะต้องทำงานให้ครบทุกช่วงเวลาและมีหน่วยความจำเพียงพอ
  • ขึ้นบรรทัดใหม่และนำขึ้นบรรทัดใหม่ได้ดี
  • เอาต์พุตจะต้องอยู่ในฐานเริ่มต้นของภาษา - หากไม่มีค่าเริ่มต้นฐานใด ๆ ก็ใช้ได้

นี่คือดังนั้นรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ


6
ไม่โปรแกรมของคุณจะต้องทำงานให้กับช่วงเวลาที่ทุกคนมีเวลาเพียงพอและหน่วยความจำ หมายความว่าฉันไม่สามารถใช้เช่น int ใน C?
เดนนิส

คำตอบ:


21

เยลลี่ 13 ไบต์

“Ŀo‘’FQỌµḟ;¹V

ลองออนไลน์! หรือเรียกใช้สิบโปรแกรมแรก

พื้นหลัง

เจลลี่มีสตริงตัวอักษรหลากหลายประเภท ทั้งหมดของพวกเขาเริ่มต้นด้วย หากตัวอักษรมีมากกว่าหนึ่งสตริงอาร์เรย์จะถูกส่งคืนและแยกสตริงออกจากกัน

ยกตัวอย่างเช่นอัตราผลตอบแทน“abc“def”['abc', 'def']

ขึ้นอยู่กับตัวอักษรตัวสุดท้ายของตัวอักษร (ใด ๆ ของ”«»‘’ที่«ไม่ได้ดำเนินการในปัจจุบัน) หนึ่งสามารถเลือกระหว่างตัวอักษรประเภทที่แตกต่างกัน สำหรับเราได้รับคะแนนรหัสในหน้ารหัสของเยลลี่แทนอักขระ Unicode ที่เกี่ยวข้อง

ยกตัวอย่างเช่นอัตราผลตอบแทน“abc“def‘[[97, 98, 99], [100, 101, 102]]

ตัวอักษรในสามโปรแกรมแรกนั้นสอดคล้องกับอาร์เรย์จุดรหัสต่อไปนี้

“Ŀo‘           -> [199, 111]
““ĿĿoo‘        -> [[], [199, 199, 111, 111]]
“““ĿĿĿooo‘     -> [[], [], [199, 199, 199, 111, 111, 111]]

มันทำงานอย่างไร ( n = 3 )

“““ĿĿĿooo‘‘‘’’’FFFQQQỌỌỌµµµḟḟḟ;;;¹¹¹VVV  Main link. Implicit argument: 0

“““ĿĿĿooo‘                               Yield the 2D array
                                         [[], [], [199, 199, 199, 111, 111, 111]].
          ‘‘                             Increment twice, yielding
                                         [[], [], [201, 201, 201, 113, 113, 113]].
            ’’’                          Decrement thrice, yielding
                                         [[], [], [198, 198, 198, 110, 110, 110]].
               F                         Flatten, yielding
                                         [198, 198, 198, 110, 110, 110].
                FF                       Twice more. Does nothing.
                  Q                      Unique; yield [198, 110].
                   QQ                    Twice more. Does nothing.
                     Ọ                   Unordinal; convert the Unicode code points
                                         198 and 110 to 'Æ' and 'n'.
                      ỌỌ                 Twice more. Does nothing.
                        µµµ              Begin three monadic chains, all with
                                         argument s := "Æn".
                           ḟ             Filter-false; remove the characters of s
                                         from s, yielding "".
                            ḟḟ           Twice more. Does nothing.
                              ;;;¹       Concatenate with s three times, yielding
                                         "ÆnÆnÆn".
                                  ¹¹     Identity function. Does nothing.
                                    V    Eval the resulting Jelly code, i.e.,
                                         call the next-prime atom thrice, with
                                         initial implicit argument 0.
                                     VV  Eval two more times. This is a no-op
                                         on integers.

1
สิ่งนี้ต้องการคำอธิบายอย่างแน่นอน ... และขึ้นอยู่กับว่าจะใช้ภาษาใดมันอาจเป็นภาษาเดียวที่สามารถทำได้
หมึกมูลค่า

6
อะไรนะ ... นั่นเป็นวิธีที่รวดเร็วเกินไป
clismique

@ValueInk ฉันได้แก้ไขคำตอบของฉัน
เดนนิส

21

GS2 (ส่ง67fea47 ), 6 3 ไบต์

dnR

มันทำงานอย่างไร

เช่นเดียวกับคำสั่งส่วนใหญ่ GS2 dนั้นโอเวอร์โหลด เริ่มแรกมีรายการว่าง (อินพุตหรือขาดมัน) บนสแต็กดังนั้นdคำนวณผลรวมของมัน หลังจากการวนซ้ำครั้งแรกจะมี0บนสแต็กและdคำนวณพาริตี (เช่น0 ) ดังนั้นไม่ว่าเราจะทำซ้ำกี่ครั้งdผลลัพธ์จะเป็น0เดียวเสมอ

ส่วนถัดไปตรงไปตรงมา คำสั่งnจะปรากฏที่ด้านบนของสแต็กและกดจำนวนเฉพาะถัดไป ดังนั้นการทำซ้ำn kคูณคำนวณk สำคัญ

ในที่สุดคำสั่งจะใช้strกับส่วนบนสุดของสแต็กซึ่งแปลงตัวเลขเป็นการแทนค่าสตริงและไม่มีผลกับสตริง ดังนั้นไม่ว่าเราจะทำซ้ำกี่ครั้งRผลลัพธ์จะเป็นสตริงที่แทนk สำคัญ


2
อะไรในโลก!
downrep_nation

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