Циклические строки, скрытые программы


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
Я бы не рекомендовал сроки.
— Эрик Outgolfer

Любое требование о A, Bи Cбыть разные строки? Например, могут ли три строки быть одинаковыми? Если программа выводит новую строку после вывода, мы можем не считать это?
— Луис Мендо

Это не требуется A, B, Cотличаться от других. Новые строки считаются частью вывода, поэтому новые строки в строке являются частью программы.
— Блекс

Ответы:


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