สตริงวน, โปรแกรมที่ซ่อนอยู่


13

เขียนโปรแกรม 3 โปรแกรมที่ทำงานต่อไปนี้:

ให้ A, B, C ซอร์สโค้ดของทั้งสามโปรแกรม;

  • ถ้า A รัน BC ถูกสร้างขึ้นเป็นเอาต์พุต
  • ถ้า B ทำงาน CA ผลิต
  • ถ้า C วิ่ง AB ผลิต

ดังนั้นแต่ละโปรแกรมจะเขียนสตริง (กรณืสำหรับแต่ละโปรแกรม) และซ่อนตัวเองจากมัน

ข้อ จำกัด เพิ่มเติม แต่สำคัญ:

  • ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
  • แต่ละโปรแกรมต้องมีความยาวอย่างน้อย 1 ไบต์
  • แต่ละโปรแกรมต้องเขียนด้วยภาษาที่แตกต่างกัน

มันจะดีถ้าการส่งของคุณมีรูปแบบนี้:

ภาษา A (ขนาด A) - ภาษา B (ขนาด B) - ภาษา C (ขนาด C) - คะแนน

A B C
<extra stuff>

ผู้ชนะคือคนที่ได้คะแนนต่ำสุดซึ่งเป็นผลรวมของขนาดของสามโปรแกรม


มันจะดีกว่าถ้าจะให้คะแนนเป็นคะแนนสุดท้าย (เพื่อให้สอดคล้องกับสคริปต์ลีดเดอร์บอร์ด)
Leaky Nun


7
ฉันจะไม่แนะนำกำหนดเวลา
Erik the Outgolfer

มีข้อกำหนดอะไรAบ้างBและCเป็นสายอักขระต่าง ๆ ตัวอย่างเช่นสามสายสามารถเหมือนกันได้หรือไม่ หากโปรแกรมพิมพ์บรรทัดใหม่หลังจากเอาต์พุตเราจะไม่สามารถนับได้หรือไม่?
Luis Mendo

มันไม่จำเป็นต้องA, B, Cความแตกต่างกัน ขึ้นบรรทัดใหม่นับเป็นส่วนหนึ่งของเอาต์พุตดังนั้นการขึ้นบรรทัดใหม่ในสตริงเป็นส่วนหนึ่งของโปรแกรม
Blex

คำตอบ:


3

Befunge-98 , Gol> <>และWumpus 47 * 3 = 141 bytes

"r75*1-47*0.@o&r84#o&]=74#]=\`/KHj '!_@#,k.'g00

ลองใช้ใน Befunge! ลองใช้ใน> <>! ลองใช้ใน Wumpus!

ใช่แล้วมันเป็นโปรแกรมเดิมสามครั้ง! เมื่อทำงานในภาษาใด ๆ ข้างต้นมันจะพิมพ์ซอร์สโค้ดสองครั้งซึ่งเป็นอีกสองโปรแกรมที่ต่อกัน

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

Befunge code:
  "r                               j '!_@#,k.'g00

  "   Wrapping string literal over code
   r  Reflect the pointer
  "   Wrapping string literal
                                              g00   Fetch " from cell 0,0 
                                          ,k.'      Print 47 characters
                                       _@#          If the next character is 0, exit
                                      !             Otherwise, set it to 0
                                   j '              And jump back to the beginning


Gol><> code:
  "r75*1-47*0.                \`/KH

  "             Wrapping string literal
   r            Reverse stack
    75*1-       Push "
         47*0.  Jump to cell 28,0
                              \  Continue right
                               `/K   Duplicate the top 47 characters on the stack
                                  H  Halt and output stack contents

Wumpus code:
  "r75*1-47*0.@o&r84#o&]=74#]=\

  "r75*1-47*0.  Exact same function as the ><> code, but with a bouncing string literal
                              \  Reflect left
                            ]=   Push a copy of the " to the bottom of the stack
                         74#     Push 47
                       ]=        Push a copy of the 47 to the bottom of the stack
                     o&          Print the top 47 characters
                  84#            Push a '0' to make up for the missing 0 at the end
               o&r               Reverse the stack and print the top 47 characters
              @                  And terminate

0

JScript, VBScript, Windows Batch, 345 ไบต์

a=new ActiveXObject("scripting.filesystemobject");b=a.opentextfile(".js");c=b.readline();d=b.readline();a.createtextfile(".bat").write("@echo "+d.substr(2)+">.vbs\n@echo '"+c+">>.vbs")
//set a=createobject("scripting.filesystemobject"):set b=a.opentextfile(".vbs"):c=b.readline:d=b.readline:a.createtextfile(".js").write(mid(d,2)+chr(10)+"//"+c)

ตั้งชื่อไฟล์. js จากนั้น. vbs จากนั้น. bat จะถูกสร้างขึ้น

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