Strings cíclicos, programas ocultos

13

Escreva 3 programas que executam a seguinte tarefa:

Deixe os códigos-fonte A, B, C desses três programas;

  • se A executa BC é produzido como saída,
  • se B executar CA for produzido,
  • se C executa AB é produzido;

então cada programa grava uma string (ciclada para cada programa) e se esconde dela.

Restrições adicionais, mas essenciais:

  • são proibidas brechas padrão;
  • cada programa deve ter pelo menos 1 byte de comprimento;
  • cada um dos três programas deve ser escrito em um idioma diferente;

Seria bom se o seu envio tivesse este formato:

Idioma A (tamanho de A) - Idioma B (tamanho de B) - Idioma C (tamanho de C) - Pontuação

A B C
<extra stuff>

Vencedor é alguém que obtém a pontuação mínima, que é a soma dos tamanhos de três programas.

Blex
fonte
Seria melhor ter a pontuação vêm passado (para caber com o script leaderboard)
Leaky Nun
7
Eu não recomendaria prazos.
Erik the Outgolfer
Qualquer exigência sobre A, Be Csendo diferentes cordas? Por exemplo, as três strings podem ser iguais? Se o programa imprimir uma nova linha após a saída, não podemos contar isso?
Luis Mendo
Não é necessário A, B, Cser diferente. As novas linhas são contadas como parte da saída, portanto, as novas linhas na sequência fazem parte do programa.
Blex

Respostas:

3

Befunge-98 , Gol> <> e Wumpus 47 * 3 = 141 bytes

"r75*1-47*0.@o&r84#o&]=74#]=\`/KHj '!_@#,k.'g00

Experimente em Befunge! Experimente em> <>! Experimente em Wumpus!

É isso mesmo, é o mesmo programa três vezes! Quando executado em qualquer um dos idiomas acima, ele imprime o código fonte duas vezes, que são os outros dois programas concatenados.

Como funciona:

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
Brincadeira
fonte
0

JScript, VBScript, Lote do Windows, 345 bytes

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)

Nomeie o arquivo .js, então .vbs e .bat serão criados.

Peter Ferrie
fonte