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


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.