String siklik, program tersembunyi

13

Tulis 3 program yang melakukan tugas berikut:

Biarkan kode sumber A, B, C dari ketiga program tersebut;

  • jika A menjalankan BC diproduksi sebagai output,
  • jika B menjalankan CA diproduksi,
  • jika C run AB diproduksi;

jadi setiap program menulis string (bersepeda untuk setiap program) dan menyembunyikan diri darinya.

Kendala tambahan, tetapi penting:

  • celah standar dilarang;
  • masing-masing program harus minimal 1 byte;
  • masing-masing dari tiga program harus ditulis dalam bahasa yang berbeda;

Alangkah baiknya jika kiriman Anda memiliki format ini:

Bahasa A (ukuran A) - Bahasa B (ukuran B) - Bahasa C (ukuran C) - Skor

A B C
<extra stuff>

Pemenang adalah seseorang yang mendapatkan skor minimum, yang merupakan jumlah ukuran dari tiga program.

Blex
sumber
Akan lebih baik untuk memiliki skor datang terakhir (agar sesuai dengan skrip leaderboard)
Leaky Nun
1
Terkait Terkait
Dead Possum
7
Saya tidak akan merekomendasikan tenggat waktu.
Erik the Outgolfer
Adakah persyaratan tentang A, Bdan Cmenjadi string yang berbeda? Misalnya, dapatkah tiga senarnya sama? Jika program mencetak baris baru setelah output, tidak bisakah kita menghitungnya?
Luis Mendo
Hal ini tidak diperlukan A, B, Cmenjadi berbeda. Baris baru dihitung sebagai bagian dari output sehingga baris baru dalam string adalah bagian dari program.
Blex

Jawaban:

3

Befunge-98 , Gol> <> dan Wumpus 47 * 3 = 141 byte

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

Cobalah di Befunge! Coba di> <>! Cobalah di Wumpus!

Itu benar, ini program yang sama tiga kali lipat! Ketika dijalankan dalam salah satu bahasa di atas, ia mencetak kode sumber dua kali, yang merupakan dua program lainnya digabungkan.

Bagaimana itu bekerja:

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
Jo King
sumber
0

JScript, VBScript, Windows Batch, 345 byte

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)

Beri nama file .js, lalu .vbs, dan .bat akan dibuat.

Peter Ferrie
sumber