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


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.