循环字符串,隐藏程序


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)

对任何要求ABC为不同的字符串?例如,三个字符串可以相同吗?如果程序在输出后打印换行符,我们可以不算吗?
路易斯·门多

它不是必需的ABC是不同的。换行被计为输出的一部分,因此字符串中的换行是程序的一部分。
Blex

Answers:


3

Befunge-98Gol> <>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。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.