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.