Devirli dizeler, gizli programlar


13

Aşağıdaki görevi gerçekleştiren 3 program yazın:

Bu üç programın A, B, C kaynak kodlarını;

  • eğer A işletmesi BC çıktı olarak üretilirse,
  • B çalışırsa CA üretilir,
  • C çalışırsa AB üretilir;

böylece her program bir dize yazar (her program için döngülü) ve kendisini bu programdan gizler.

Ek, ancak önemli kısıtlamalar:

  • standart boşluklar yasaktır;
  • her program en az 1 bayt uzunluğunda olmalıdır;
  • Üç programların her zorundadır farklı bir dilde yazılmış olması;

Gönderiniz şu biçimde olsaydı iyi olurdu:

Dil A (A boyutu) - Dil B (B boyutu) - Dil C (C boyutu) - Puan

A B C
<extra stuff>

Kazanan, üç programın boyutlarının toplamı olan minimum puanı alan biridir.


Skorun en son gelmesi daha iyi olurdu (afiş tablosuna uymak için)
— Leaky Nun


7
Son teslim tarihlerini tavsiye etmem.
— Outgolfer Erik

Herhangi hakkında gereksinimi A, Bve Cfarklı dizeleri olmak? Örneğin, üç dize aynı olabilir mi? Program çıktıdan sonra yeni satır yazdırırsa, bunu sayamaz mıyız?
— Luis Mendo

Bu gerekli değildir A, B, Cfarklı olmak. Yeni satırlar çıktının bir parçası olarak sayılır, böylece dizedeki yeni satırlar programın bir parçasıdır.
— Blex

Yanıtlar:


3

Befunge-98 , Gol> <> ve Wumpus 47 * 3 = 141 bayt

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

Befunge'de deneyin! Deneyin> <>! Wumpus'ta deneyin!

Bu doğru, üç kez aynı program! Yukarıdaki dillerden herhangi birinde çalıştırıldığında, kaynak kodu iki kez yazdırır; diğer iki program birleştirilir.

Nasıl çalışır:

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 Toplu İş, 345 bayt

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)

Dosya adını .js, sonra .vbs ve sonra .bat oluşturulacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.