더 큰 버전의 자체 버전을 만드는 프로그램 (퀸 변형)


109

소스 코드를 출력하는 프로그램을 작성해야합니다.

  1. 원래 프로그램보다 더 큼 (문자 단위)
  2. 실행될 때 자체보다 큰 다른 프로그램을 인쇄합니다 (예 : 새 프로그램도이 문제에 대한 올바른 답변입니다)

이것은 코드 골프이므로 최단 답변이 이깁니다.


4
@Kevin, 정의는 재귀 적입니다. 출력은 출력이 자신보다 큰 프로그램이어야하며이 질문에 대한 답변이어야합니다. 따라서 출력의 출력은 출력보다 커야하고 출력의 출력은 훨씬 커야합니다.
ugoren

8
규칙을 명확히해야한다고 생각합니다. 한편, 어떤 그런 프로그램에 의해 추가 코드 출력은 "분명히 쓸모없는"입니다; 다른 한편으로, 출력에있는 모든 추가 코드는이 문제에 대한 답변을 목표로한다는 점에서 "유용합니다".
Jason C

5
당신의 도전을 파괴해서 죄송합니다. :^)
저스틴

2
이 도전은 코드 골프보다 인기 경연 대회보다 훨씬 나을 것이라고 생각합니다. 훨씬 더 많은 창의성을 허용합니다!
corsiKa

30
당연히 그러한 프로그램은 퀴닌으로 알려져 있습니다.
Jonathan Van Matre 2014

답변:


89

GS2 (8636bd8e) , 0 바이트



이것은 하나의 줄 바꿈을 인쇄하여 두 줄 바꿈을 인쇄하고 세 줄 바꿈을 인쇄합니다.

온라인으로 사용해보십시오!


3
gs2가 도전보다 새로운 것이기 때문에 이것은 기술적으로 비 경쟁적이지 않습니까?
DJMcMayhem

24
이 커밋 은 한 달 반 정도 챌린지를 시작합니다. 방금 테스트했으며 의도 한대로 작동합니다.
Dennis

1
이것은 허점이 아닌가 ???
Mama Fun Roll

14
@MamaFunRoll 왜 그럴까요? 이것은 빈 Retina 프로그램 1 인쇄 , 빈 Jelly 프로그램 0 인쇄 또는 빈 Stuck 프로그램 인쇄 Hello, World! 와 다르지 않습니다 . .
Dennis

2
@Cyoce GS2에서 줄 바꿈이 다른 줄 바꿈을 출력하는 경우가 있습니다.
Esolanging 과일

299

H9 + : 1 문자

9

맞습니다. 한 캐릭터. 유효한 프로그램 인 맥주 99 병에 가사를 출력합니다 . 관련없는 모든 데이터는 계산되지 않지만 거기에 많은 데이터가 9있습니다.

출력 된 프로그램의 출력은 59 병의 맥주 99 병에 대한 가사입니다.

이 기능은 프로그램 n시간 을 실행할 때 가사가 출력되는 횟수를 제공합니다 (내 계산이 올바른 경우).

f(n) = 59n-1

32
주어진 언어로 된 0 문자 프로그램은 유효 할 경우 0 문자를 출력 할 것입니다. 그리고 유한 값 x에 대해 0 * x = 0이므로 출력 된 프로그램이 실제로 소스 코드보다 9999999999999999 배 더 크다고 주장 할 수 있습니다.
nitro2k01

39
@JohannesH. 모든 (해결 가능한) 문제의 경우 0 문자로 문제를 해결하는 프로그래밍 언어가 있습니다.
Cruncher

15
"Cruncher 's Theorem"이라는 이름이 아직 발견되지 않은 한 여전히 이름을 옮깁니다.
Erty Seidohl

22
흥미로운 특징 중 하나 2*59^n-2는 "the"의 "h"로 인해 "Hello, world!"의 인스턴스 도 포함한다는 것입니다 .
AJMansfield

8
당신이 이길 것 같습니다.
PyRulez

118

GolfScript, 9 자

{.'.~'}.~

이 코드는 다음을 출력합니다.

{.'.~'}{.'.~'}.~

어떤 출력 :

{.'.~'}{.'.~'}{.'.~'}.~

어떤 출력 :

{.'.~'}{.'.~'}{.'.~'}{.'.~'}.~

등등.

나는 이것이 지금까지 "실제"Turing-complete 프로그래밍 언어에서 가장 짧은 대답이라고 생각합니다.

설명:

기본적으로 위의 원래 코드는 "퀸 레이어"입니다. 일반 quine 다음에 그 자체가 출력됩니다.

GolfScript {foo}에서 스택에 방해받지 않으면 코드 블록 리터럴 (예 :)이 엉망 입니다. 따라서 {.'.~'}다른 코드 블록과 마찬가지로 자체적으로 출력됩니다.

.~코드의 끝에이를 복제 스택의 마지막 코드 블록을 취하고, 복사를 실행한다. 실행될 때 .'.~'코드 블록 내부의 코드는 스택의 최상위 항목 (예 : 자체 사본)을 복제하고 문자열을 추가합니다 .~.

프로그램이 끝날 때 GolfScript 인터프리터는 스택의 모든 것을 문자열 화하여 출력합니다.이 경우 {.'.~'}입력 보다 블록이 하나 더 있고 문자열이 더해 .~집니다.

보너스:

스택의 모든 코드 블록을 복제하기 전에 배열로 수집 ]하기 위해 첫 번째 앞에를 추가하면 .지수가 커집니다.

{].'.~'}.~

출력 :

{].'.~'}{].'.~'}.~

어떤 출력 :

{].'.~'}{].'.~'}{].'.~'}{].'.~'}.~

어떤 출력 :

{].'.~'}{].'.~'}{].'.~'}{].'.~'}{].'.~'}{].'.~'}{].'.~'}{].'.~'}.~

등등.


196
{].'.~'}.~︵ ┻━┻
nitro2k01


2
@ nitro2k01 내 첫 생각은 정확히 : D
Songo

1
HQ9 +가 실제가 아니거나 GolfScript가 실제가 아니거나 둘 다 있기 때문에 따옴표 안에 "실제"입니까?
Roger Pate

1
@thepiercingarrow 소스 코드는 이와
Rod

108

자바 7 : 0 문자



파일로 저장하십시오 Blank.java. 다른 파일로 저장하는 경우 인스턴스를 Blank적절한 파일 이름으로 바꾸십시오.

그런 다음 먼저 컴파일하고 실행하여 명령 행에서 실행하십시오. 컴파일에 실패하면 중지하십시오.

Java 7 에 따라 다르게 출력 될 수 있으므로 이것을 Java 7 로 나열합니다 .

처음 몇 개의 출력 (stderr로 출력) :

Error: Could not find or load main class Blank
Blank.java:1: error: class, interface, or enum expected
Error: Could not find or load main class Blank
^
Blank.java:1: error: reached end of file while parsing
Error: Could not find or load main class Blank
                                              ^
2 errors
Blank.java:1: error: class, interface, or enum expected
Blank.java:1: error: class, interface, or enum expected
^
Blank.java:1: error:  expected
Blank.java:1: error: class, interface, or enum expected
                          ^
Blank.java:1: error:  expected
Blank.java:1: error: class, interface, or enum expected
                                     ^
Blank.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
Blank.java:1: error: class, interface, or enum expected
                                          ^
  (use -source 1.4 or lower to use 'enum' as an identifier)
Blank.java:1: error: = expected
Blank.java:1: error: class, interface, or enum expected
                                               ^
Blank.java:2: error:  expected
Error: Could not find or load main class Blank
     ^
Blank.java:2: error: ';' expected
Error: Could not find or load main class Blank
      ^
Blank.java:2: error: = expected
Error: Could not find or load main class Blank
                      ^
Blank.java:2: error: = expected
Error: Could not find or load main class Blank
                                   ^
Blank.java:2: error:  expected
Error: Could not find or load main class Blank
                                              ^
Blank.java:3: error: = expected
^
^
Blank.java:3: error: ';' expected
^
 ^
Blank.java:4: error: illegal start of type
Blank.java:1: error: reached end of file while parsing
     ^
Blank.java:4: error: = expected
Blank.java:1: error: reached end of file while parsing
          ^
Blank.java:4: error: illegal start of type
Blank.java:1: error: reached end of file while parsing
           ^
Blank.java:4: error:  expected
Blank.java:1: error: reached end of file while parsing
            ^
Blank.java:4: error: = expected
Blank.java:1: error: reached end of file while parsing
          ^
Blank.java:4: error: illegal start of type
Blank.java:1: error: reached end of file while parsing
           ^
Blank.java:4: error:  expected
Blank.java:1: error: reached end of file while parsing
            ^
Blank.java:4: error: = expected
Blank.java:1: error: reached end of file while parsing
              ^
Blank.java:4: error: ';' expected
Blank.java:1: error: reached end of file while parsing
                   ^
Blank.java:4: error: = expected
Blank.java:1: error: reached end of file while parsing
                                 ^
Blank.java:4: error:  expected
Blank.java:1: error: reached end of file while parsing
                                        ^
Blank.java:4: error: = expected
Blank.java:1: error: reached end of file while parsing
                                         ^
Blank.java:4: error: ';' expected
Blank.java:1: error: reached end of file while parsing
                                              ^
Blank.java:5: error:  expected
Error: Could not find or load main class Blank
     ^
Blank.java:5: error: ';' expected
Error: Could not find or load main class Blank
      ^
Blank.java:5: error: = expected
Error: Could not find or load main class Blank
                      ^
Blank.java:5: error: = expected
Error: Could not find or load main class Blank
                                   ^
Blank.java:5: error:  expected
Error: Could not find or load main class Blank
                                              ^
Blank.java:6: error: = expected
                                              ^
                                              ^
Blank.java:6: error: ';' expected
                                              ^
                                               ^
Blank.java:7: error: reached end of file while parsing
2 errors
        ^
30 errors

23
" 소스 코드 를 출력하는 프로그램을 작성해야합니다. "출력이 소스 코드가 아닐 수도 있습니다. 또한 출력 정의 (출력이 구체적으로 와야하는지 여부)에 따라 stdout실제로 아무것도 출력되지 않습니다.
nitro2k01

43
@ nitro2k01 나는 " 소스 코드 를 출력 할 프로그램을 작성해야한다"라고 인용한다 . 아무것도 소스 코드입니다. 그러나 일부는 유효한 소스 코드입니다. 또한 출력으로 간주되는 것을 지정하지 않았으므로 자유가 허용됩니다.
저스틴

15
@PyRulez 맞습니다. 나는 당신의 규칙을 이용했습니다. 이 답변을 수락하지 않아도됩니다. 내가 이것을 게시했을 때, 나는 많은 상하 투표로 완료되는 논쟁이 따를 것이라는 것을 알았다. 그래도 그만한 가치가 있다고 결정했습니다.
저스틴

29
프로그램 자체가 출력을 인쇄 했습니까? 컴파일러 만이 아니 었습니까? 프로그램은 컴파일되지 않으며 자체적으로 해석되거나 실행되지 않으므로 출력을 생성 할 수 없습니다.
VX

12
나는 동의하지 않는다-사람들은 다른 누군가가 미친 짓을하기 때문에 이러한 도전을 시도하지 않는다. 우리는 다른 방법으로 스스로에게 도전합니다. Mark Rosewater가 말한 것처럼 "제한은 창의성을
키우고 있습니다

79

HQ9 +, HQ9 ++ 및 유사 항목, 2 자

QQ

이것은 출력입니다.

QQQQ

36
나는 이것을보고 "아뇨, 아무것도 이길 수 없습니다"라고 생각했습니다. 나는 무언가를 생각해 내기 시작했다. 그래서 답을 올렸습니다.
저스틴

1
@Quincunx Bravo, 귀하의 답변을 찬성했습니다.
Victor Stafusa

4
@Quincunx 아니요, 2^2^n초기 프로그램이 0 세대 인 곳 이라고 생각합니다 m -> m^2. 길이가 반복 됩니다.
Vortico

3
@Vortico 좋은 지적입니다. 내가 잘못 말했지만 의미는 다음과 같습니다. code-length n에서 출력은 n^n입니다. 그러나 그것은 거짓입니다. 코드 길이가 n인 경우 출력 길이는n^2
Justin

2
처음 두 번의 반복 조차도이 질문에 대한 경쟁자가 될 수 있기 때문에 재미 있습니다.
PyRulez

29

루비 27

의 아주 약간 수정 된 버전 ( 경유 ) :

puts <<3*3,3
puts <<3*3,3
3

puts-line이 인쇄 되는 횟수가 기하 급수적으로 증가합니다.

$ ruby quine.rb | ruby | ruby
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
3

$ ruby quine.rb | ruby | ruby | ruby | ruby | ruby | ruby | ruby | wc -l
    3283

17
카이저 참모 본부에 의해 영감을 답변
벤 잭슨에게

25

람다 미적분학-29

간단한 람다 용어

(λu.(u u)(u u))(λu.(u u)(u u))

이 용어를 하나의 베타 감소 수율로 감소

((λu.(u u)(u u))(λu.(u u)(u u)))((λu.(u u)(u u))(λu.(u u)(u u)))

그리고 등등. 그것은 (λu.u u)(λu.u u)람다 미적분학에서 퀴네 인 고전의 간단한 변형입니다. 여기의 이중 자기 적용은 우리가 두 배의 결과를 얻음을 의미합니다.


7
람다 미적분학에서 람다 용어는 "실행 중"이란 단일 베타 감소를 수행하지 않고 정상적인 형태를 계산하는 것을 의미한다고 주장합니다. 또한 용어는 여러 개의 redexe를 포함 할 수 있으므로 "단일 redex를 줄이는 것"은 모호한 작업입니다.
Petr Pudlák

2
맞습니다. 그러나이 용어는 정상적인 형태가 아니기 때문에 작은 단계 축소 측면에서 이에 대해 이야기하는 것이 좋습니다. 람다 미적분에는 고유의 세트 평가가 없기 때문에 이름별로 의미가없는 단일 redex 최상위 redex를 줄 이도록 "실행"을 정의 할 수 있습니까?
jozefg

3
정규 형식이없는 용어는 종료되지 않는 프로그램에 해당합니다. 최상위 레벨 redex 의 문제점 은 하나의 용어가 두 개의 redexe를 가질 수 있다는 것입니다. 어떤 기준을 줄일 것인지 선택할 수는 있지만 표준 람다 미적분학 시맨틱과는 거리가 멀다. (어쨌든 나는 당신의 새로운 아이디어를 주셔서 감사합니다.)
페트르 Pudlák

2
(λx.xxx) (λx.xxx) : 20
Fabio F.

2
(λx. xx) (λx. xxx)는 한 단계로 감소
Ben Millwood

23

SH 스크립트, 9

cat $0 $0

기하 급수적으로 자랍니다.

실행 sh whatever.sh하거나 실행 파일로 설정하십시오.

Windows 버전은 여기에 있습니다 .


2
이 의견을 쓸 때 Quine Wiki 페이지에 파일 시스템에서 읽는 것이 부정 행위라고 말합니다.
로드 Ratte

3
@LordRatte 반면에, 과제는 퀴즈를 작성하는 것이 아닙니다.
Jason C

20

dc 11

아주 간단합니다 :

6579792
dfP

첫 번째 줄은 세대마다 한 번씩 반복됩니다.

$ dc growing_quine.dc
6579792
6579792
dfP

$ dc growing_quine.dc | dc | dc 
6579792
6579792
6579792
6579792
dfP

마지막 줄은 다음과 같은 지침으로 구성됩니다 d. 스택에 넣은 마지막 값 (6579792)을 복제하고 (매번 실행할 때마다 사본을 하나 더 얻음) f전체 스택 (동일한 숫자의 묶음 )을 인쇄합니다. P숫자 (6579792)를 바이트 스트림으로 인쇄하여로 표시합니다 dfP.


16

레드 코드 (재귀 솔루션)

다음은 유명한 Imp 코드 인 redcode로 쓰기 가능한 가장 쉬운 전사의 코드입니다 .

MOV 0, 1

실행될 때, 코드는 단일 명령의 사본을 메모리의 다음 주소에 기록합니다. 그런 다음 실행합니다.


15

파이썬 3-55

print(open(__file__).read())
f=lambda:print('f()')
f()

__ file__을 단일 문자 파일 이름으로 바꾸고 파일을 그대로 저장하면 더 짧아 질 수 있지만이 대답은 질문의 정신에 더 가깝습니다. 한 번 반복하면 다음이 출력됩니다.

print(open(__file__).read())
f=lambda:print('f()')
f()
f()

3
이것은 엉망이 아닙니다. 정의를 참조하십시오 .
Petr Pudlák

14
@ PetrPudlák이 질문에 대한 프로그램도 없습니다. 이것은 엄격한 quining이 아닌 quine-variant 문제입니다.
AJMansfield

6

스몰 토크, 125 61 57

골프 버전은 거의 읽을 수 없으므로 먼저 설명하고 실제 식별자를 사용합니다.

이것은 "가장 이상한 방법으로 스택 오버플로"자체 수정 방법의 변형입니다.

이 메소드는 hello 메시지와 현재 소스를 출력합니다 (데모 용). 그런 다음 코드를 수정하여 더 긴 문자열을 출력하고 설치합니다. 마지막으로 새 코드를 재귀 적으로 호출합니다.

즉각적인 도망으로부터 자신을 보호하기 위해 사용자는 각 사이클에서 확인할 수 있습니다.

객체에서 컴파일 :

eatMe_alice
   |msg mySource|

   mySource := thisContext method source.

   '**** Hello Alice' printCR.
   '  ---- my current code is:' printCR.
   mySource printCR.
   '  ---------------' printCR.

   (UserConfirmation confirm:'Again? ') ifTrue:[
       Object compile:
            (mySource
                copyReplaceString:'Hello ','Alice'
                withString:'Hello ','Alice !').
       self eatMe_alice
   ]

"eatMe_alice"를 임의의 오브젝트에 보내 쇼를 시작하십시오. nil은 할 것이다 :

nil eatMe_alice

좋은 변형은 새 코드를 재귀 적으로 호출하지 않고 대신 호출 스택을 해제하고 새 메소드에 다시 입력하여 반복적으로 호출하는 것입니다. 이는 재귀 예외로 이어지지 않는 이점이 있습니다. 이렇게하려면 재귀 호출 ( "self eatMe_alice")을 다음과 같이 바꾸십시오.

thisContext resend

골프 :

분명히, 인쇄 및 자기 전화는 요구되지 않았으므로, 가장 짧은 (골프의 경우) 단순히 내 자신의 소스에 의견을 추가하고 회신하는 것입니다. 부작용으로 다음 통화에도 설치됩니다 ...

x|s|Object compile:(s:=thisContext method source,'""').^s

5

SH 스크립트, 12 8 7

파일을 저장

sed p *

자체의 빈 디렉토리에 있고 실행 sh [file]파일을 설정하거나 설정 하여이 디렉토리에서 실행하십시오.


8 자로 된 오래된 대안 이지만 자체 디렉토리가 필요하지 않습니다. 파일을 저장

sed p $0

sh [file]실행 파일을 사용 하거나 실행하십시오.

12 자로 된 오래된 대안 :

sed -i- p $0

이것은 실제로 프로그램 파일 자체로 출력되지만 출력 위치는 지정되지 않았습니다. 기하 급수적으로 복제합니다.


1
당신은 여전히을 사용 ed하고 있을지도 모르지만 , 맨 페이지를보고 싶지 않았다 ...
Jens Erat

4

자바 스크립트, 41 , 40 자

function f(){console.log(f+"f(f())")}f()

처음 실행 ;f()하면 마지막에 다른 것과 함께 출력됩니다 . 이후에 출력을 실행하면 각 "입력"소스가 두 번 인쇄됩니다.

alert보다 짧은 것이 console.log있지만 출력으로 콘솔에서 여러 라인을 호출하는 합리적인 것 같다 동안 "는"출력하는 복수의 경고 대화 상자를 고려하지 않습니다.


"f(f())"대신 1 바이트를 절약 할 수 있습니다"f();f()"
Hedi

이것은 나를 위해 작동하지 않는 것 같습니다 ...
파괴 레몬

4

J , 1 바이트

'

온라인으로 사용해보십시오!

공개 견적은 분명히 공개 견적 오류를 제공합니다.

|open quote
|   '
|   ^
|[-1] /home/runner/.code.tio

J 인터프리터의 특성상 오류는 STDERR이 아닌 STDOUT에 인쇄됩니다 .

위 코드를 코드로 실행하면 다음과 같이 인쇄됩니다.

|open quote
|   |   '
|       ^
|[-2] /home/runner/.code.tio

그때

|open quote
|   |   |   '
|           ^
|[-2] /home/runner/.code.tio

등등. 코드가 실행될 때마다 두 번째 줄은 4 바이트 |   로 채워져이 과제의 요구 사항을 충족시킵니다.

J , 적절한 quine 변형, 25 바이트

echo,~'echo,:~(,quote)'''

온라인으로 사용해보십시오!

출력

echo,:~(,quote)'echo,:~(,quote)'

그런 다음 별도의 줄에 두 번 자체 출력됩니다.

echo,:~(,quote)'echo,:~(,quote)'
echo,:~(,quote)'echo,:~(,quote)'

그때

echo,:~(,quote)'echo,:~(,quote)'
echo,:~(,quote)'echo,:~(,quote)'
echo,:~(,quote)'echo,:~(,quote)'
echo,:~(,quote)'echo,:~(,quote)'

등등.

첫 번째 출력은 표준 J quine 의 간단한 변형입니다 . 추가 ,:~된 결과는 수직으로 연결되어 결과 2D 배열이 동일한 문자열의 두 행으로 인쇄됩니다.


3

윈도우 .BAT, 25

@COPY %~nx0+%~nx0 CON>NUL

기하 급수적으로 자랍니다.

이에 상응하는 SH 버전은 여기 입니다.



3

마이크로 스크립트 II, 6 바이트

비경쟁 언어는 도전 과제를 게시합니다.

"qp"qp

첫 번째 반복 qp은 끝에 추가 를 추가하고 , 연속 된 각 반복은이 원래 프로그램의 추가 사본을 처음에 추가합니다.



2

EcmaScript 6 (51 바이트) :

(_=x=>'(_='+_+Array(x++).join(','+_)+')('+x+')')(2)

그것은 더 긴 버전의 자체를 생성하여 더 긴 버전의 자체를 생성 할 수 있습니다.


2

PHP, 38

<?echo fgets(fopen(__FILE__,'r')).';';

실행할 때마다 세미콜론이 추가됩니다.


세미콜론은 쓸모없는 코드입니까?
Justin

3
@Quincunx 그들은 맞습니다. 그러나 유용한 코드는 무엇이라고 생각하십니까?
ComFreek

아마 당신은에 넣을 수 ';'있습니다. 그러면 더 긴 출력을 얻을 수 있습니다.
저스틴

1
왜 안돼 <?=fgets(fopen(__FILE__,'r')).';';?
Ismael Miguel

1
;<?echo fgets(fopen(__FILE__,'r'));
jimmy23013

2

ECMAScript 6 (38 자)

(f=_=>'(f='+f+')();(f='+f+')();')();

어떤 출력 :

(f=_=>'(f='+f+')();(f='+f+')();')();(f=_=>'(f='+f+')();(f='+f+')();')();

편집하다

당신은 할 수 있습니다 (28 문자) :

(f=_=>'(f='+f+')();'+f())();

그러나 무한히 재귀하고 아무것도 반환하지 않지만 ...이 같은 작업을 수행하면 해결할 수 있습니다 (42 자).

(f=_=>_?'(f='+f+')('+_+');'+f(_-1):'')(3);

어느 것이 출력 될까요?

(f=_=>_?'(f='+f+')('+_+');'+f(_-1):'')(3);(f=_=>_?'(f='+f+')('+_+');'+f(_-1):'')(2);(f=_=>_?'(f='+f+')('+_+');'+f(_-1):'')(1);

3
+_+ =_=이모티콘 +1
TuxCrafting

2

공통 리스프, 16 자

(print `(or ,-))

물론 대화식 전용이지만 현재 최상위 형식을 참조 할 수있는 것이 사양을 충족하는 사소한 프로그램을 최소화하는 가장 좋은 방법 일 것입니다.

정말 흥미로운 것은 가장 빠른 속도입니다. 아마도 같은

(print `(progn ,@(loop repeat (length -) collect -)))


일반 리스프 +1 당신은 건너 뛸 수 있습니다처럼 나에게 보이는 `,?
daniero

@daniero 인용없이, 그것은 단지 성장하지 않는 원래 프로그램을 인쇄합니다. 그 시점에서, 당신은뿐만 아니라 생략 할 수 or도 :(print -)
스튜어트 올슨

2

줄리아, 66 문자

x="print(\"x=\$(repr(x))\\n\$x;\"^2)";print("x=$(repr(x))\n$x;"^2)

출력 (134 자) :

x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);

결과 실행 결과 (268 자) :

x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);

다음 결과 (536 자) :

x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);

다음 결과 (1072 자) :

x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);

나는 이것이 규칙에 따르기를 바랍니다.

더 큰 출력을 생성하고 출력 자체는 더 큰 출력을 다시 생성하는 유효한 소스 코드입니다.


실행시 출력이 유효한 항목을 생성합니까?
PyRulez 2016 년

첫 번째 예에서 출력은 유효한 코드입니다. 5 개의 마침표가 포함 된 문자열 리터럴입니다. 두 번째 예에서 julia 프롬프트 자체를 입력하면 아무 작업도 수행되지 않습니다. 난 그냥 입력을 쳐서 repl 실제로 줄 바꿈 문자를주는 것이 입력보다 더 긴 출력을 생성한다고 생각했습니다.
ML

"....."가 더 큰 버전의 자체를 생성합니까?
PyRulez 2016 년

아, 이제 이해합니다. 방금 재귀 적이어야한다는 것을 알았습니다. 내 솔루션을 수정하는 시간입니다. 힌트 주셔서 감사합니다.
ML

1
코드가 지금 규칙을 따르는 것 같습니다.
ML

2

05AB1E, 15 바이트, 비경쟁

0"DÐ34çý"DÐ34çý

온라인으로 사용해보십시오!

인쇄 0"DÐ34çý"DÐ34çý"DÐ34çý"DÐ34çý,
인쇄 0"DÐ34çý"DÐ34çý"DÐ34çý"DÐ34çý"DÐ34çý"DÐ34çý"DÐ34çý"DÐ34çý,
등등


의 두 인스턴스를 모두로 DD바꿀 수 있습니다 Ð.
Emigna

1
왜 경쟁이 아닌가?
MD XF

2

Evoloop, 9 × 9 직사각형 (81 셀)

Evoloop 세포 자동자는 골리에 포함 는 "quine 같은"방식으로 자신을 복제 패턴을 지원합니다. 구체적으로, 이러한 패턴은 각각 "프로그램"을 포함합니다. 패턴은 먼저 프로그램을 실행 한 다음 (딸의 "본체"를 작성 함) 프로그램을 딸에게 복사하여 자체적으로 재생됩니다.

위의 내용은 Evoloop뿐만 아니라 더 유명한 "Langton 's Loops"셀룰러 오토 마톤에도 적용되지만, Evoloop에는 흥미로운 차이점이 있습니다.

(훨씬 흥미로운, 내 의견으로는, Evoloop 자신을 재현! 나는이 작업을 수행 할 수있는 유일한 알려진 셀룰러 오토마타는 Evoloop과 그 후손을 생각하는 매우 실제와 같은 방식으로 진화 패턴을 포함하는 간단한 세포 자동자는 사실이다 그러나 Evoloop의 단점은 하나의 특정 "최상의"게놈이 있다는 것입니다. 진화는 항상이 하나의 게놈으로 수렴합니다.)

이제이 제출에는 두 가지 단점이 있습니다. 하나는 셀룰러 오토 마톤의 "출력"이 무엇인지 명확하지 않다는 것입니다. 그러나 나는자가 재생 오토 마톤이 퀴인이되기에 "충분히 가까이"있다고 생각합니다. 확실히 덜 흥미 롭습니다! 다른 단점은 이러한 패턴이 단지 하나의 복사본을 만드는 것이 아니라는 것입니다. 마다원래 패턴의 사본은 무한히 많은 사본을 생성하려고 시도하며,이 사본들은 파괴적인 방식으로 서로 상호 작용하게됩니다. 따라서 저는이 도전의 요구 사항을 정신적으로 만 충족 시켰지만 서면으로는 그렇지 않은 것 같습니다.

더 이상 고민하지 않으면 패턴은 다음과 같습니다.

022222220
270170172
212222202
202000212
272000272
212000202
202222212
271041032
022222250

다음은 Golly에 복사하여 붙여 넣을 수있는 형식의 패턴입니다.

x = 9, y = 9, rule = Evoloop
.7B$BG.AG.AGB$BA5B.B$B.B3.BAB$BGB3.BGB$BAB3.B.B$B.5BAB$BGA.DA.CB$.6BE
!

알았어, 어떻게 생겼어? 다음과 같이 보입니다 :

셀룰러 오토 마톤의 패턴으로 점점 더 큰 사본을 만듭니다.

위의 애니메이션에서 초기 패턴이 더 큰 딸을 만들어 큰 손녀를 만든 다음 큰 증손녀를 만들고 마지막으로 더 큰 큰 증손녀를 만들어서 더 큰 제 3의 증인을 만드는 것을 볼 수 있습니다. 손녀. 이 패턴을 오랫동안 실행했다면 계속 이런 식으로 계속 진행될 것입니다 (또는 아마도 진화 된 유기체에 의해 추월 될 것입니다.이 유기체는 훨씬 더 빠르게 재생할 수 있습니다. 확실하지 않습니다).


1

배치, 26

이 코드를 .bat 파일에 넣으면 계속 실행되고 (무한 루프에서) 파일도 커집니다.

echo echo %0 ^>^> %0 >> %0

이것은 작동하지 않습니다 %0. 스크립트를 호출하는 데 사용되는 명령으로 .BAT확장명 이 없을 수 있습니다 . %~nx0배치 파일의 전체 파일 이름을 얻는 데 사용할 수 있습니다 .
Jason C

@JasonC AFAIK, .bat실행할 필요가 없습니다 . 파일 이름이 execute.bat이면 execute또는을 입력 할 수 있습니다 execute.bat. 둘 다 작동합니다.
ub3rst4r

파일 자체가 있어야 .bat실행할 수있는 확장 기능을하지만, 당신이 그것을 실행할 때 확장을 남길 수 있습니다 (당신이 확장자를 가진 명령을 입력 할 때, 윈도우는 시도 .com, .exe다음 .bat순서대로). 파일 이름이 hello.bat인 경우 원본 >> %0파일 hello이 아니고 hello.bat실행할 수없는 파일을 작성합니다 .
Jason C

1

PYG (6)

P(Q,Q)

개행으로 구분 된 자체 소스 코드를 인쇄합니다. 2 세대는

P(Q,Q)
P(Q,Q)

기타 등등.


1

오일 , 83 바이트

0
0
1
1
1
4
1
11
4
1
11
1
2
2
1
12
18
10
18
1
32
22
1
18
26
4
26
8
18
11
6
17
4
26

먼저 두 줄을 0으로 인쇄 한 다음 각 줄을 줄 1과 비교하여 같으면 (파일이 소진 된 경우) 셀 26에있는 내용을 인쇄합니다. 결과 출력은 33아무것도하지 않는 added를 제외하고는 동일 합니다. 다음에 다른 줄이 추가됩니다.


1

도와주세요! , 1 바이트

H

인쇄 Hello, World!합니다.

H 이외의 다른 문자는 유효하고 안전한 소스 코드입니다 (Hello World의 다른 변형을 인쇄 함).


HQ9 +의 (변종)에서도 작동합니다.
CalculatorFeline

HQ9 +의 @CalculatorFeline은 계속 성장하지 않을 것입니다.
Martin Ender
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.