Циклічні рядки, приховані програми


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бути різними рядками? Наприклад, чи можуть три струни бути однаковими? Якщо програма виводить новий рядок після виводу, чи не можемо ми це порахувати?
Луїс Мендо

Це не потрібно A, B, Cвідрізнятися від інших. Нові рядки зараховуються як частина результату, тому нові рядки в рядку є частиною програми.
Blex

Відповіді:


3

Befunge-98 , Gol> <> і Wumpus 47 * 3 = 141 байт

"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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.