이것은 매우 간단합니다.
가장 많은 출력을 생성하면서 가능한 가장 짧은 프로그램을 작성하십시오.
재미있게 만들기 위해 무한 출력을하는 프로그램은 실격 처리됩니다.
승자는 출력 크기 / 코드 크기 비율이 가장 큰 프로그램입니다.
결과는 Intel Core i5 및 8GB 메모리가 장착 된 Mac OS X 10.7.5를 실행하는 Mac 인 내 컴퓨터에서 작동하는 것을 기반으로 합니다.
\n
이것은 매우 간단합니다.
가장 많은 출력을 생성하면서 가능한 가장 짧은 프로그램을 작성하십시오.
재미있게 만들기 위해 무한 출력을하는 프로그램은 실격 처리됩니다.
승자는 출력 크기 / 코드 크기 비율이 가장 큰 프로그램입니다.
결과는 Intel Core i5 및 8GB 메모리가 장착 된 Mac OS X 10.7.5를 실행하는 Mac 인 내 컴퓨터에서 작동하는 것을 기반으로 합니다.
\n
답변:
'a'*9**9
**9
s를 더 추가하면 비율이 무한대가 될 수 있습니다 .
'a'*9**9**9
'a'*9**9**9**9
etc.
예를 들면 다음과 같습니다.
'a'*9**9**9**9**9**9
~ 10 10 10 10 10 8.568 의 비율 을가집니다 ( 상상적으로 큰 수).
**9
s 를 추가 하면 결국 그렇지 Infinity
않습니까?
**9
출력이되기 전에 넣을 수있는 최대 개수를 계산 하십시오 Infinity
.
따라서 이것들은 아주 적은 코드로 많은 양의 출력을 생성하는 좋은 프로그램이지만 실제로는 짧지 않습니다 ...
brainfuck, 5 자, 255 바이트 출력
-[.-]
나는 이것이 brainfuck이 실제로 탁월한 유일한 유스 케이스라고 생각합니다. 나는 이것이 이길 수 없다는 것을 알고 있지만, 파이썬 예제보다 더 잘할 수 있다고 생각하지 않습니다. 뿐만 아니라 ...
brainfuck, 4 자, 무한 출력
-[.]
나는 이것이 가장 짧은 무한 출력 프로그램이라고 추측합니다.
사실, 잠깐만, 내 배우자는 정말 좋은 사람을 생각해 냈습니다.
파이썬, 80 바이트, 알 수없는 양의 출력
from datetime import datetime
while datetime.now()!=datetime.max()
print "This will probably get disqualified"
이 프로그램은 결국 중단 될 것이지만 대략 8,000 년 후에야 중단 될 것입니다. 정확한 문자 출력 수는 컴퓨터에서 문자를 생성 할 수있는 속도에 따라 다릅니다.
.
무한 스트림을 0 자로 출력합니다.
print+($]x9e7)x26e7
1.7GB 이하의 메모리를 사용하는 단일 인쇄 설명으로 166 개의 petabyes.
제가 생각했던 것보다이 도전을 더욱 흥미롭게 만든 몇 가지가 있습니다. Perl은 단일 목록에 1GB 이상의 메모리 할당을 거부하는 것으로 보입니다. 따라서 내부 문자열에 대한 4 바이트 스칼라 참조는 26e7 ≈ 2 28 회만 반복 될 수 있습니다 . $]
문자열로 8 바이트 길이 인 '이전 펄 버전'번호입니다 5.016002
.
시스템 메모리가 많을수록 더 높아질 수 있습니다. 전체 8GB를 실제로 사용할 수 있다고 가정하면 $]x9e8
내부 문자열을 대신 사용할 수 있어야하며 1.62 엑사 바이트를 출력합니다.
999999**99999
단순히 매우 큰 수를 다른 매우 큰 수의 거듭 제곱으로 올립니다. 실행하는 데 약 20 초가 걸립니다. 숫자를 무한대로 만들 수 있기 때문에 숫자를 늘릴 수 없습니다.
(나는 이 작업을 더 일찍 수행 했으며 현재는 더 긴 출력을 위해 루프를 만들고 있습니다.)
편집 : 나는 그것을했다!
a=999999**99999;a.times{p a}
테스트되지 않은 (명백한 이유로) 첫 번째 숫자는 약 1e599994이며 599994에 6e599999가 곱해집니다. 이론적으로는 작동하지만 컴퓨터가 충돌하는지 확실하지 않으므로 면책 조항 : 컴퓨터가 어떤 식 으로든 해를 입히면 책임지지 않습니다.
물론 계속 진행할 수 있습니다.
a=999999**99999;a.times{a.times{p a}}
그리고, 그러나 나는 어떤 컴퓨터가 그것을 다룰 수 있는지 의심합니다 : P
무한 입력이 허용 된 경우
cat /dev/random
그렇지 않기 때문에
head -99 /dev/random
(25128 출력 : 20 입력 = 1256.4 : 1)
나는 리눅스 박스에 없지만, 당신이 같은 것을 할 수 있다고 상상합니다.
timeout 99d cat /dev/random
그리고 큰 결과를 얻습니다. (GigaWatt의 응답을 통해)
timeout 99d
. 네, 99 일의 런타임입니다. 또한, 나는 이것에 대해 확신하지 못하지만 결국 엔 엔트로피 풀을 비우고 /dev/random
차단 /dev/urandom
할 것이므로 더 적절할 수 있습니다. (저는 40MB / s를 사용 urandom
하고 128KB / s 만 사용했습니다. random
)
9
실제 문자 수는 통역사에 따라 다르지만 약 10000 정도가 맞습니까?
for(ulong i=0;i<ulong.MaxValue;i++){Console.Write(new WebClient().DownloadString(@"http://bit.ly/dDuoI4"));}
그것은 단지 위키 백과의 미국 대법원 법관 목록 (4344904 문자) 18446744073709551615 번을 다운로드하여 인쇄합니다 .
for(ulong i=0;i<ulong.MaxValue;i++){Console.Write(new string('a',int.MaxValue));}
2147483647 문자 * 18446744073709551615 배 = 39614081238685424720914939905 / 81 => 비율 : 489062731341795366924875801
'=~~~~,~~~~,~~~~:''=|*<%[%]'=',',',':''&*-~|:'''=|*<%[%]''&',',',':'''&*-~|:''''=|*<%[%]'''&',',',':''''&*-~|:''''&':''=|*<%[%]@~~~~,~~~~,~~:''&*-~|:''&':
원리 : 첫째, 그것은 설정 '
이어서 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을 포함합니다.
나는 이것을 훨씬 더 크게 만들 수 있었지만 과잉이었다.
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=61
Firefox는에만 도달 할 수 있습니다 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
의 가상 출력이 생성 됩니다.
a=1e99.times;a{a{a{a{a{puts'a'*99}}}}}}}}}}
매우 짧지는 않지만 출력에서 보상하므로 아직 측정 할 수 없었습니다.
1e127
문자 출력 에 관한 것 입니다. 어쨌든 변수에 할당하면 코드 크기가 약 절반으로 줄어 듭니다. 또한 1e99
공간을 덜 차지하는 더 큰 숫자입니다. 또한, 사용하는 map
대신 each
, 사용하는 puts
대신에 print
, 사이에 여분의 공백을 제거 print
하고 "ier...
. 큰 문자열을 공간을 덜 차지하는 더 긴 문자열 인 'a'*999
(또는 ?a*999
) 로 바꿀 수도 있습니다 . 요약 :이 전혀 golfed되지 않는다
(0..1e99).map
변수에 할당하지 않습니까? 같은a=(0...1e99).map;a{a{a{a{a{puts'a'*99}}}}}
a=(0...1e99).map
. 그 소리를 조금 뒤로하고 싶을 수도 있습니다. 0..1e9
약 4GB를 사용합니다.
다음은 Mathematica 입력 그림입니다. SE에서 렌더링하는 방법을 알지 못했습니다.
다음은 출력의 자릿수를 보여주는 스크린 샷입니다. IntegerDigits
출력을 자릿수 목록으로 변환합니다. Length
자릿수를 계산합니다.
키 입력을 입력합니다 : 9, ctrl6, 9, ctrl6, 9, ctrl6, 9, ctrl6, 9...
Befunge의 스택은 이론적으로 무한하지만 스택이 저장하는 숫자는 부호없는 긴 정수 (여기서는 32 비트로 가정)의 크기로 제한됩니다. 따라서 Befunge 인터프리터에게 x의 적절한 값에 대해 (x + 1)> x는 false입니다. 이 사실을 사용하여 먼저 모든 값을 0에서 최대 (두 번째, 세 번째 숫자마다 하나씩)로 푸시 한 다음 스택의 각 값에 대해 출력 및 감소한 다음 0에 도달하면 팝합니다. 결국 스택이 비워지고 프로그램이 종료됩니다. 출력 크기가 약간 떨어져 있지만 그 야구장 어딘가에 있어야합니다.
>::1# + #1\`# :# _> #- #1 :# :# .# _# .# :# _@
main(){for(int i=1<<31;i<~0;)puts("!");main();}
65090은 정확하지 않으며 스택 크기에 따라 다릅니다. 충돌이 발생하면 프로그램은 결국 중지됩니다. 또한, 나는 배급 방식을 무한대로 만들기 위해 puts ()에 더 길고 긴 문자열을 넣을 수는 있지만 다소 건방진 것처럼 보입니다.
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 루프로 진행합니다.
편집 : 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")