주기적 문자열, 숨겨진 프로그램


13

다음 작업을 수행하는 3 개의 프로그램을 작성하십시오.

이 세 프로그램의 A, B, C 소스 코드를 보자.

  • A run BC가 출력으로 생성되면
  • B가 CA를 실행하면 생산됩니다.
  • C가 실행되면 AB가 생성되고;

따라서 각 프로그램은 문자열을 작성하고 (각 프로그램마다 순환 됨) 자신을 숨 깁니다.

추가적인 필수 제약 사항 :

  • 표준 허점은 금지되어 있습니다.
  • 각 프로그램의 길이는 1 바이트 이상이어야합니다.
  • 세 프로그램 각각은 다른 언어로 작성 되어야합니다 .

제출물에 다음 형식이 있으면 좋을 것입니다.

언어 A (A의 크기)-언어 B (B의 크기)-언어 C (C의 크기)-점수

A B C
<extra stuff>

승자는 최소 점수를받는 사람으로 세 프로그램의 크기를 합한 것입니다.


(리더 보드 스크립트에 맞게) 마지막 점수를 얻는 것이 더 좋을 것입니다.
Leaky Nun


7
마감일을 권장하지 않습니다.
Outgolfer Erik

모든에 대한 요구 A, B그리고 C다른 문자열 인? 예를 들어, 세 줄이 동일 할 수 있습니까? 프로그램이 출력 후 줄 바꿈을 인쇄하면 계산할 수 없습니까?
Luis Mendo

그것은 필요하지 않습니다 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 배치, 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가 생성됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.