가장 긴 출력을위한 가장 짧은 코드 [닫힘]


10

이것은 매우 간단합니다.

가장 많은 출력을 생성하면서 가능한 가장 짧은 프로그램을 작성하십시오.

재미있게 만들기 위해 무한 출력을하는 프로그램은 실격 처리됩니다.

승자는 출력 크기 / 코드 크기 비율이 가장 큰 프로그램입니다.

결과는 Intel Core i5 및 8GB 메모리가 장착 된 Mac OS X 10.7.5를 실행하는 Mac 인 컴퓨터에서 작동하는 것을 기반으로 합니다.


정확히 무엇을 요구하는지 명확하지 않습니다. 대답은 무제한 메모리, 무제한 색인 크기 등을 가정해야합니까?
피터 테일러

@PeterTaylor 나는 그것을 고쳤다.
tbodt

5
내가 알아낼 수 있다면 날려 버려야하지만 일부 인터프리터가 빈 파일을 해석하고 내용을 생성하는 방법이 있다고 확신합니다.이 또한 무한한 비율을 제공합니다 .

8
@LegoStormtroopr GolfScript가 그 법안에 맞습니다. 빈 스크립트를 실행하면 정확히 하나의 출력 문자가 생성됩니다.\n
primo

1
@ user2509848 no, 말했듯이 무한 출력은 계산되지 않습니다.
tbodt

답변:


18

파이썬 : 8 문자 코드, 387420489 문자 출력-비율 : 48427561.125 : 1

'a'*9**9

**9s를 더 추가하면 비율이 무한대가 될 수 있습니다 .

'a'*9**9**9
'a'*9**9**9**9
etc.

예를 들면 다음과 같습니다.

'a'*9**9**9**9**9**9

~ 10 10 10 10 10 8.568 의 비율 을가집니다 ( 상상적으로 큰 수).


다른 것보다 더 나은 ...
tbodt

@tbodt 왜? O_o @arshajii 충분한 **9s 를 추가 하면 결국 그렇지 Infinity않습니까?
Doorknob

@Doorknob 죄송합니다, 나는 파이썬에 관한 모든 것을 모른다. 이제 과제는 다음과 같습니다 . **9출력이되기 전에 넣을 수있는 최대 개수를 계산 하십시오 Infinity.
tbodt

1
@Doorknob Python 정수는 임의의 정밀도를 갖습니다.
arshajii

@tbodt 위의 주석을 참조하십시오.
arshajii

16

따라서 이것들은 아주 적은 코드로 많은 양의 출력을 생성하는 좋은 프로그램이지만 실제로는 짧지 않습니다 ...

brainfuck, 5 자, 255 바이트 출력

-[.-]

나는 이것이 brainfuck이 실제로 탁월한 유일한 유스 케이스라고 생각합니다. 나는 이것이 이길 수 없다는 것을 알고 있지만, 파이썬 예제보다 더 잘할 수 있다고 생각하지 않습니다. 뿐만 아니라 ...

brainfuck, 4 자, 무한 출력

-[.]

나는 이것이 가장 짧은 무한 출력 프로그램이라고 추측합니다.

사실, 잠깐만, 내 배우자는 정말 좋은 사람을 생각해 냈습니다.

파이썬, 80 바이트, 알 수없는 양의 출력

from datetime import datetime
while datetime.now()!=datetime.max()
 print "This will probably get disqualified"

이 프로그램은 결국 중단 될 것이지만 대략 8,000 년 후에야 중단 될 것입니다. 정확한 문자 출력 수는 컴퓨터에서 문자를 생성 할 수있는 속도에 따라 다릅니다.


1
나는 파이썬 하나를 좋아한다 : D
Kevin Cox

2
"이것은 가장 짧은 무한 출력 프로그램이라고 생각합니다."아뇨, 이것은 Befunge의 암시 적 루프 (랩 어라운드를 통해)가 유용한 곳입니다. .무한 스트림을 0 자로 출력합니다.
FireFly

14

Perl-19 바이트, 187200000000000000 바이트 출력 (9852631578947368.42 : 1)

print+($]x9e7)x26e7

1.7GB 이하의 메모리를 사용하는 단일 인쇄 설명으로 166 개의 petabyes.

제가 생각했던 것보다이 도전을 더욱 흥미롭게 만든 몇 가지가 있습니다. Perl은 단일 목록에 1GB 이상의 메모리 할당을 거부하는 것으로 보입니다. 따라서 내부 문자열에 대한 4 바이트 스칼라 참조는 26e7 ≈ 2 28 회만 반복 될 수 있습니다 . $]문자열로 8 바이트 길이 인 '이전 펄 버전'번호입니다 5.016002.

시스템 메모리가 많을수록 더 높아질 수 있습니다. 전체 8GB를 실제로 사용할 수 있다고 가정하면 $]x9e8내부 문자열을 대신 사용할 수 있어야하며 1.62 엑사 바이트를 출력합니다.


16
"만일 1,000,000 명의 원숭이에게 1,000,000 명의 타자기를주고, 1,000,000 년 동안 물건을 쓸 수있게하면, 한 원숭이는 결국 Java 프로그램을 작성하게됩니다. 다른 원숭이는 단지 Perl 스크립트를 생성합니다." 그게 내가이봤을 때 내가 무슨 생각입니다 : P의 소스
손잡이

5

Ruby 및 Python, 13 자, 599994 자 출력, ~ 46153 : 1 비율

999999**99999

단순히 매우 큰 수를 다른 매우 큰 수의 거듭 제곱으로 올립니다. 실행하는 데 약 20 초가 걸립니다. 숫자를 무한대로 만들 수 있기 때문에 숫자를 늘릴 수 없습니다.

(나는 작업을 더 일찍 수행 했으며 현재는 더 긴 출력을 위해 루프를 만들고 있습니다.)

편집 : 나는 그것을했다!

루비, 28 자, 6e599999 문자 출력, ~ 6e599998 비율 (제 생각에)

a=999999**99999;a.times{p a}

테스트되지 않은 (명백한 이유로) 첫 번째 숫자는 약 1e599994이며 599994에 6e599999가 곱해집니다. 이론적으로는 작동하지만 컴퓨터가 충돌하는지 확실하지 않으므로 면책 조항 : 컴퓨터가 어떤 식 으로든 해를 입히면 책임지지 않습니다.

물론 계속 진행할 수 있습니다.

루비, 37 자, 6e359992800041 문자 출력, ~ 6e359992800040 비율

a=999999**99999;a.times{a.times{p a}}

그리고, 그러나 나는 어떤 컴퓨터가 그것을 다룰 수 있는지 의심합니다 : P



@tbodt Hehe, 맞아! 변경 사항을 추가해도 변경되지는 않습니다.
Doorknob

5

무한 입력이 허용 된 경우

cat /dev/random

그렇지 않기 때문에

head -99 /dev/random

(25128 출력 : 20 입력 = 1256.4 : 1)

나는 리눅스 박스에 없지만, 당신이 같은 것을 할 수 있다고 상상합니다.

timeout 99d cat /dev/random

그리고 큰 결과를 얻습니다. (GigaWatt의 응답을 통해)


2
한 문자를 대체하여 출력을 8562 배 더 길게 만들 수 있습니다 timeout 99d. 네, 99 일의 런타임입니다. 또한, 나는 이것에 대해 확신하지 못하지만 결국 엔 엔트로피 풀을 비우고 /dev/random차단 /dev/urandom할 것이므로 더 적절할 수 있습니다. (저는 40MB / s를 사용 urandom하고 128KB / s 만 사용했습니다. random)
Mr. Llama

@GigaWatt 대단합니다.
tristin

4

HQ9 +, 11471

9

실제 문자 수는 통역사에 따라 다르지만 약 10000 정도가 맞습니까?


무엇 이다 HQ9 +는? 나는 그것을 들어 본 적이 없다.
tbodt

아, 죄송합니다, 그것은 '진짜'프로그래밍 언어가 아니기 때문에 주로 농담이었습니다. esolangs.org/wiki/HQ9%2B
Dom Hastings

2

C # : 108 자 비율 : 742123445489230793057592 : 1

for(ulong i=0;i<ulong.MaxValue;i++){Console.Write(new WebClient().DownloadString(@"http://bit.ly/dDuoI4"));}

그것은 단지 위키 백과의 미국 대법원 법관 목록 (4344904 문자) 18446744073709551615 번을 다운로드하여 인쇄합니다 .


URL 단축기가 필요합니다. 나는 그것에 대해 확실하지 않다.
tbodt

1
확인. 그리고 이것에 대해 : for(ulong i=0;i<ulong.MaxValue;i++){Console.Write(new string('a',int.MaxValue));}2147483647 문자 * 18446744073709551615 배 = 39614081238685424720914939905 / 81 => 비율 : 489062731341795366924875801
thepirat000

훨씬 낫다. URL 단축기가 필요하지 않습니다.
tbodt

2

~-~! - 비 : (64 4 4 4 64 ) / 154 = 10 ~ 10 10 10 10 1.583328920493678

'=~~~~,~~~~,~~~~:''=|*<%[%]'=',',',':''&*-~|:'''=|*<%[%]''&',',',':'''&*-~|:''''=|*<%[%]'''&',',',':''''&*-~|:''''&':''=|*<%[%]@~~~~,~~~~,~~:''&*-~|:''&':

원리 : 첫째, 그것은 설정 '이어서 4 ^ 3 또는 64에,이 수 ''의 함수 세트 ''^ * 4 번 (여기서 * 그것의 입력). '''그런 다음 ''입력을 '^ 4 로 호출하는 함수가 작성 됩니다 . 다음에, ''''호출하는 함수 이루어진다 '''으로 '그것의 입력으로서 ^ 4. ''''그런 다음 64의 입력으로 호출됩니다. 마지막으로 ''공백 * 시간을 인쇄하는 함수로 변경됩니다. 그런 다음의 입력으로 호출됩니다 '.

결국, 밝혀 '입니다 64 4 4 4 64 , 내 프로그램의 길이는 154 ; Wolfram | Alpha로 펀칭 하면 10 10 10 10 10 1.583328920493678을 뱉어 계산에 방해가되지 않습니다. 나는 그것이 얼마나 많은 숫자를 포함하는지 모르지만 64 4 4 는 463을 포함합니다.

나는 이것을 훨씬 더 크게 만들 수 있었지만 과잉이었다.


1

자바 스크립트 : 27 자; 260,431,976 문자 출력; 9,645,628.74 비율

for(s=i=61;s=btoa(s),i--;)s

이 코드는 입력 61을 Base64에 재귀 적으로 61 번 인코딩합니다 . 길이 입력 n을 Base64로 인코딩하면 length 출력 n * 8/6이 4의 배수로 반올림됩니다.

기본적으로 Base64 인코딩 기능을 지원하는 JavaScript 콘솔 환경에서 실행해야합니다 btoa. (모든 최신 브라우저 (Node.js는 아님)) 참고 Chrome은을 (를) 초과하여 실행할 수 없지만 i=61Firefox는에만 도달 할 수 있습니다 i=60. 또한 Chrome 콘솔은 너무 커서 출력을 실제로 표시 할 수 없지만 다음을 실행하여 결과 크기를 확인할 수 있습니다.

for(s=i=61;s=btoa(s),i--;)s.length

이 프로그램을 최대로 실행할 수 있으면 약 5,500 억 (5.39e11)의 가상 비율로 14,566,872,071,840 (14.5 조, 14.5e12) 문자 i=99의 가상 출력이 생성 됩니다.


1

루비, 23 자-~ 500000000000000 (5e14) 출력

while rand
puts 0
end

Ti-Basic 84, 13 자-~ 3000 출력

:Disp 1
:prgmA

프로그램 이름 prgmA


1

루비, 283 96 44 자

a=1e99.times;a{a{a{a{a{puts'a'*99}}}}}}}}}}

매우 짧지는 않지만 출력에서 ​​보상하므로 아직 측정 할 수 없었습니다.


2
내 계산에 따르면 이것은 1e127문자 출력 에 관한 것 입니다. 어쨌든 변수에 할당하면 코드 크기가 약 절반으로 줄어 듭니다. 또한 1e99공간을 덜 차지하는 더 큰 숫자입니다. 또한, 사용하는 map대신 each, 사용하는 puts대신에 print, 사이에 여분의 공백을 제거 print하고 "ier.... 큰 문자열을 공간을 덜 차지하는 더 긴 문자열 인 'a'*999(또는 ?a*999) 로 바꿀 수도 있습니다 . 요약 :이 전혀 golfed되지 않는다
손잡이

@Doorknob 감사합니다. 루비에 대한 강력한 가이드 3 장을 제외하고는 루비에 대해 아는 것이 없습니다.
tbodt

예, 왜 (0..1e99).map변수에 할당하지 않습니까? 같은a=(0...1e99).map;a{a{a{a{a{puts'a'*99}}}}}
손잡이

내 Ruby 인터프리터가 메모리 평가에 부족했습니다 a=(0...1e99).map. 그 소리를 조금 뒤로하고 싶을 수도 있습니다. 0..1e9약 4GB를 사용합니다.
primo

1

Mathematica 9 자 비율 : ~ 4564112 : 1

다음은 Mathematica 입력 그림입니다. SE에서 렌더링하는 방법을 알지 못했습니다.

지수

다음은 출력의 자릿수를 보여주는 스크린 샷입니다. IntegerDigits출력을 자릿수 목록으로 변환합니다. Length자릿수를 계산합니다.

카운트

키 입력을 입력합니다 : 9, ctrl6, 9, ctrl6, 9, ctrl6, 9, ctrl6, 9...


1
뭐? Mathematica에 입력 할 수 있습니까?
tbodt

예, 이것은 Mathematica에 대한 합법적 인 입력입니다.
DavidC

그리고 어떤 키 입력이 필요합니까?
tbodt

@tbodt Keystrokes가 이제 답변에 표시됩니다.
DavidC

1
순서를 지정 해야하는지 모르겠지만 하향식으로 계산하고 싶습니다. (9 ^ 9) ^ 9 는 78 자리 숫자이지만 9 ^ (9 ^ 9) 는 369,693,100 자리 숫자입니다. (감사, wolframalpha)
SeanC

0

Befunge-93 : 48 자, 약 ((2 ^ 32) ^ 2) * 10 자 출력

Befunge의 스택은 이론적으로 무한하지만 스택이 저장하는 숫자는 부호없는 긴 정수 (여기서는 32 비트로 가정)의 크기로 제한됩니다. 따라서 Befunge 인터프리터에게 x의 적절한 값에 대해 (x + 1)> x는 false입니다. 이 사실을 사용하여 먼저 모든 값을 0에서 최대 (두 번째, 세 번째 숫자마다 하나씩)로 푸시 한 다음 스택의 각 값에 대해 출력 및 감소한 다음 0에 도달하면 팝합니다. 결국 스택이 비워지고 프로그램이 종료됩니다. 출력 크기가 약간 떨어져 있지만 그 야구장 어딘가에 있어야합니다.

>::1# + #1\`# :# _> #- #1 :# :# .# _# .# :# _@

0

C : 약 48 자 (2 ^ 32-1) * 65090 바이트 출력

main(){for(int i=1<<31;i<~0;)puts("!");main();}

65090은 정확하지 않으며 스택 크기에 따라 다릅니다. 충돌이 발생하면 프로그램은 결국 중지됩니다. 또한, 나는 배급 방식을 무한대로 만들기 위해 puts ()에 더 길고 긴 문자열을 넣을 수는 있지만 다소 건방진 것처럼 보입니다.


1
그것은 무한 루프입니다
izabera

그렇습니다, 당신 말이 맞아요. 그 문제를 해결하는 방법을 알아낼 수 있는지 살펴 보겠습니다.
Stuntddude

0

java (131) : 알 수 없지만 유한 한 양

class A{public static void main(String[] args){while(Math.random()>0){for(long l=0;l!=-1;l++){System.out.println("1234567890");}}}}

Math.random ()의 낮은 기회를 사용하여 루프에서 0에 도달 한 다음 출력 1234567890을 가진 foreach를 통해 2 ^ 64-1 루프로 진행합니다.


0

115 바이트 인 Python 3, 7983 년 동안 실행 (알 수없는 문자 수)

편집 : ymbirtt는 나를 이겼다 ._.

나는 이것이 짧지 않다는 것을 알고 있으며, 다른 파이썬 답변이 훨씬 길다 는 것을 알고 있지만, 나는 이것을 시도하기로 결정했습니다.

이 프로그램은 약 8000 년 동안 실행되며 꽤 오래 걸렸습니다.

그것이하는 일은 지속적으로 datetime.datetime.now()함수를 사용하여 현재 시간을 얻는 것 9999-12-31 24:59:59.999999입니다. 파이썬에서 최대 날짜를 아는 한 그것을 비교합니다 .

경우 이다 동일한 프로그램이 멈춘다. 그렇지 않은 경우 계속 출력 a합니다.

import datetime
while 1:
    if str(datetime.datetime.now())=="9999-12-31 24:59:59.999999":exit
    else:print("a")

1
그 순간을 그리워하면 어떻게 되나요?
C5H8NNaO4

@ C5H8NNaO4 7983 년 동안 그대로두면 놓치지 않을 것입니다.
m654
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.