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


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.