그레이엄 수 출력


16

Graham의 수로 표현 된이 64 개의 레이어를 모두 Wikipedia에서 출력하는 프로그램을 작성하십시오 .

  그레이엄의 수

귀하의 출력이 정확히 일치해야 이 ASCII 버전은 (이 ^표현 크 누스의 상향 화살표 슬래시의 조합을 밑줄은 큰 수평 중괄호를 나타냅니다) :

3^^...............................................................................................................................^3
 \_______________________________________________________________  _______________________________________________________________/
                                                                 \/
 3^^.............................................................................................................................^3
  \______________________________________________________________  ______________________________________________________________/
                                                                 \/
  3^^...........................................................................................................................^3
   \_____________________________________________________________  _____________________________________________________________/
                                                                 \/
   3^^.........................................................................................................................^3
    \____________________________________________________________  ____________________________________________________________/
                                                                 \/
    3^^.......................................................................................................................^3
     \___________________________________________________________  ___________________________________________________________/
                                                                 \/
     3^^.....................................................................................................................^3
      \__________________________________________________________  __________________________________________________________/
                                                                 \/
      3^^...................................................................................................................^3
       \_________________________________________________________  _________________________________________________________/
                                                                 \/
       3^^.................................................................................................................^3
        \________________________________________________________  ________________________________________________________/
                                                                 \/
        3^^...............................................................................................................^3
         \_______________________________________________________  _______________________________________________________/
                                                                 \/
         3^^.............................................................................................................^3
          \______________________________________________________  ______________________________________________________/
                                                                 \/
          3^^...........................................................................................................^3
           \_____________________________________________________  _____________________________________________________/
                                                                 \/
           3^^.........................................................................................................^3
            \____________________________________________________  ____________________________________________________/
                                                                 \/
            3^^.......................................................................................................^3
             \___________________________________________________  ___________________________________________________/
                                                                 \/
             3^^.....................................................................................................^3
              \__________________________________________________  __________________________________________________/
                                                                 \/
              3^^...................................................................................................^3
               \_________________________________________________  _________________________________________________/
                                                                 \/
               3^^.................................................................................................^3
                \________________________________________________  ________________________________________________/
                                                                 \/
                3^^...............................................................................................^3
                 \_______________________________________________  _______________________________________________/
                                                                 \/
                 3^^.............................................................................................^3
                  \______________________________________________  ______________________________________________/
                                                                 \/
                  3^^...........................................................................................^3
                   \_____________________________________________  _____________________________________________/
                                                                 \/
                   3^^.........................................................................................^3
                    \____________________________________________  ____________________________________________/
                                                                 \/
                    3^^.......................................................................................^3
                     \___________________________________________  ___________________________________________/
                                                                 \/
                     3^^.....................................................................................^3
                      \__________________________________________  __________________________________________/
                                                                 \/
                      3^^...................................................................................^3
                       \_________________________________________  _________________________________________/
                                                                 \/
                       3^^.................................................................................^3
                        \________________________________________  ________________________________________/
                                                                 \/
                        3^^...............................................................................^3
                         \_______________________________________  _______________________________________/
                                                                 \/
                         3^^.............................................................................^3
                          \______________________________________  ______________________________________/
                                                                 \/
                          3^^...........................................................................^3
                           \_____________________________________  _____________________________________/
                                                                 \/
                           3^^.........................................................................^3
                            \____________________________________  ____________________________________/
                                                                 \/
                            3^^.......................................................................^3
                             \___________________________________  ___________________________________/
                                                                 \/
                             3^^.....................................................................^3
                              \__________________________________  __________________________________/
                                                                 \/
                              3^^...................................................................^3
                               \_________________________________  _________________________________/
                                                                 \/
                               3^^.................................................................^3
                                \________________________________  ________________________________/
                                                                 \/
                                3^^...............................................................^3
                                 \_______________________________  _______________________________/
                                                                 \/
                                 3^^.............................................................^3
                                  \______________________________  ______________________________/
                                                                 \/
                                  3^^...........................................................^3
                                   \_____________________________  _____________________________/
                                                                 \/
                                   3^^.........................................................^3
                                    \____________________________  ____________________________/
                                                                 \/
                                    3^^.......................................................^3
                                     \___________________________  ___________________________/
                                                                 \/
                                     3^^.....................................................^3
                                      \__________________________  __________________________/
                                                                 \/
                                      3^^...................................................^3
                                       \_________________________  _________________________/
                                                                 \/
                                       3^^.................................................^3
                                        \________________________  ________________________/
                                                                 \/
                                        3^^...............................................^3
                                         \_______________________  _______________________/
                                                                 \/
                                         3^^.............................................^3
                                          \______________________  ______________________/
                                                                 \/
                                          3^^...........................................^3
                                           \_____________________  _____________________/
                                                                 \/
                                           3^^.........................................^3
                                            \____________________  ____________________/
                                                                 \/
                                            3^^.......................................^3
                                             \___________________  ___________________/
                                                                 \/
                                             3^^.....................................^3
                                              \__________________  __________________/
                                                                 \/
                                              3^^...................................^3
                                               \_________________  _________________/
                                                                 \/
                                               3^^.................................^3
                                                \________________  ________________/
                                                                 \/
                                                3^^...............................^3
                                                 \_______________  _______________/
                                                                 \/
                                                 3^^.............................^3
                                                  \______________  ______________/
                                                                 \/
                                                  3^^...........................^3
                                                   \_____________  _____________/
                                                                 \/
                                                   3^^.........................^3
                                                    \____________  ____________/
                                                                 \/
                                                    3^^.......................^3
                                                     \___________  ___________/
                                                                 \/
                                                     3^^.....................^3
                                                      \__________  __________/
                                                                 \/
                                                      3^^...................^3
                                                       \_________  _________/
                                                                 \/
                                                       3^^.................^3
                                                        \________  ________/
                                                                 \/
                                                        3^^...............^3
                                                         \_______  _______/
                                                                 \/
                                                         3^^.............^3
                                                          \______  ______/
                                                                 \/
                                                          3^^...........^3
                                                           \_____  _____/
                                                                 \/
                                                           3^^.........^3
                                                            \____  ____/
                                                                 \/
                                                            3^^.......^3
                                                             \___  ___/
                                                                 \/
                                                             3^^.....^3
                                                              \__  __/
                                                                 \/
                                                              3^^...^3
                                                               \_  _/
                                                                 \/
                                                               3^^^^3

64 개의 레이어가 있으며 후행 공백이 없으며 ^점 앞에 두 개가 있고 그 뒤에 하나만 나타납니다.

출력 의 MD5 해시 는 정확하게 c84d0e20eac2a7f891ab42a8eb77759f또는 1ad3b10d06e38693436c14958b2c47a8후행 줄 바꿈이있는 경우 (정상) 이어야합니다 .

바이트 단위의 가장 짧은 코드가 이깁니다. 표준 출력으로 출력합니다. 입력이 없습니다.


3
왜 그들은 위쪽 화살표가 아닌 점입니까? 그림에서 타원의 목적이 누락 된 화살표를 표시하는 것입니다.
raptortech97

4
@ raptortech97 많은 누락 된 화살표가 있기 때문입니다. 그레이엄의 숫자는 엄청나 다. 언어가 실제로 어떤 언어를 처리 할 수 ​​있는지 궁금합니다.
fuandon

4
타원은 위쪽 화살표 표기법을 사용하지 않으면 표현할 수없는 화살표 수를 나타냅니다.
Eric Tressler

2
@fuandon 유니버스 크기의 컴퓨터를 허용하더라도 실제로는 숫자를 계산할 수있는 언어가 없습니다. 가장 오른쪽 자릿수를 임의로 계산할 수는 있지만 동일하지는 않습니다.
Tally

10
1ad3b10d06e38693436c14958b2c47a8grc에서 제공 한대로 또는 c84d0e20eac2a7f891ab42a8eb77759f마지막 개행 문자를 생략 할 수있는 경우 빠른 확인을 위해 MD5 해시를 제공하는 것이 좋습니다.
comperendinous

답변:



9

파이썬, 122

i=63
while i:
 for s in'3^^'+'..'*i+'.^3','\%s  %s/'%(('_'*i,)*2),'\/':print' '*(66-len(s)/2)+s
 i-=1
print' '*63+'3^^^^3'

예:

$ python grahams.py | md5
1ad3b10d06e38693436c14958b2c47a8

그 결과는 무엇을 의미합니까?
fuandon

13
그것은 그가 위의 거대한 ASCII 출력을 재현하여 답변을 스팸하고 싶지 않다는 것을 의미합니다.
Eric Tressler

1
아, 충분합니다. 지금 당장 결과가 해시되었습니다.
fuandon

while 루프를 while 루프로 대체하는 것이 좋습니다.
qwr

8

펄-113 (-E의 경우 112 + 1)


골프 :

$.=$"x63,$y="_"x($!=63-$_),$x.=($z=$"x$_)."3^^".".."x$!.".^3$/ $z\\$y  $y/$/ $. \\/$/"for 0..62;say"$x$.3^^^^3"

언 골프 드 :

for(0..62) {
    $.=$"x63;
    $!=63-$_;
    $y="_"x$_;
    $z=$"x$!;
    $x.=$z."3^^".".."x$!.".^3$/ $z\\$y  $y/$/ $. \\/$/";
}
say"$x$.3^^^^3"

편집 : 문자열 보간에 펄이 $ m3이 변수라고 생각하는 오류가 있었 으므로이 문제를 해결하려면 2 문자를 추가해야했습니다. $ m을 $로 변경하여 해결했습니다.

닌자 편집 : ""의 인스턴스를 $로 대체했습니다. 2자를 저장합니다

NINJA EDIT 2 : 문자를 저장하기 위해 -E로 인쇄하는 대신 say를 사용할 수 있다고 지적한 @chilemagic에게 감사드립니다.

NOT-SO-NINJA EDIT 3 : @Nax의 솔루션이 기존 솔루션을 이겼으므로 조금 더 강화했습니다.


나는 당신의 페이지가 아래로 이동했을 때 문자 그대로 Perl 답변을 게시하려고했습니다 (그러나 몇 자 더 길었습니다). 중복을 줄이기 위해 루프 내부 및 외부에서 $ m을 사용한 방법이 마음에 듭니다.
comperendinous

1
say대신 Perl 버전이 높은 경우 대신 사용하고 대신 print실행할 수 있습니다 . 그래도 좋아 보인다! -E-e
hmatt1

7

하스켈, 152

(?)=replicate
g 0=["3^^^^3"]
g i=("3^^"++(i*2)?'.'++".^3"):map(' ':)(("\\"++i?'_'++"  "++i?'_'++"/"):((i+1)?' '++"\\/"):g(i-1))
main=putStr.unlines.g$63

1
젠장! 몇 초만에 닌자를 두 배로 '습니다. 그래도 +1전에 점 을 제거 하고 추가 하면 문자를 저장할 수 있다고 생각 "^3"합니다.
comperendinous

@comperendinous 좋은 지적, 감사합니다.
Ray

"\\"++를 '\\'로 바꿀 수 있습니다 :
자랑스러운 haskeller

4

C 161182

(나는이 방법을 최대한 활용했다고 생각한다. 아마 더 골프를 칠 수있는 새로운 방법을 찾아야한다)
C99로 컴파일하십시오!

main(i){for(char d[]={[0 ...126]=46,i=0},l[]={[0 ...62]=95,0};i<63;)printf("3^^%s^3\n%*s\\%s  %s/\n%*s\n%*s",d+2*i++,i,"",l+i,l+i,67,"\\/",i,"");puts("3^^^^3");}

JS 158

r="repeat";o="";u="_";s=" ";(f=i=>i?"3^^"+"."[r](i*2+1)+"^3\n"+s[r](64-i)+"\\"+u[r](i)+s[r](2)+u[r](i)+"/\n"+s[r](65)+"\\/\n"+s[r](64-i)+f(i-1):"3^^^^3")(63);

xem.github.io/obfuscatweet/124 :

eval(unescape(escape('𬠽𘡲𩑰𩑡𭀢𞱯🐢𘠻𭐽𘡟𘠻𬰽𘠠𘠻𚁦👩🐾𪐿𘠳𧡞𘠫𘠮𘡛𬡝𚁩𚠲𚰱𚐫𘡞𜱜𫠢𚱳𦱲𧐨𝠴𛑩𚐫𘡜𧀢𚱵𦱲𧐨𪐩𚱳𦱲𧐨𜠩𚱵𦱲𧐨𪐩𚰢𛱜𫠢𚱳𦱲𧐨𝠵𚐫𘡜𧀯𧁮𘠫𬱛𬡝𚀶𝀭𪐩𚱦𚁩𛐱𚐺𘠳𧡞𧡞𜰢𚐨𝠳𚐻').replace(/uD./g,'')))

3

배쉬 + 코어 유틸리티, 150

나는 이것보다 더 잘할 수있을 것이라고 생각했다. 오 잘

r()(yes "${2:- }"|head -$[$1]|tr -d '
')
for i in {63..1};{
r 63-$i
echo "3^^`r 2*$i .`.^3
`r 64-$i`\\`r $i _`  `r $i _`/
`r 65`\/"
}
r 63
echo 3^^^^3

산출:

$ ./graham.sh | md5sum
1ad3b10d06e38693436c14958b2c47a8  -
$ 

1

스타 타 135

forv x=63(-1)1{
di _d(63-`x')" ""3^^"_d(2*`x'+1)".""^3"_n_d(64-`x')" ""\"_d(`x')"_""  "_d(`x')"_"_n-d(65)" ""\/"
}
di _d(63)"3^^^^3"

1

자바 스크립트 179

n='';a=Array;for(b=64;b>1;)n+=(c=a(65-b).join(' '))+'3^^'+a(2*b).join('.')+'^3\n'+c+' \\'+(u=a(b--).join('_'))+'  '+u+'/\n'+(d=a(64).join(' '))+'  \\/\n'
console.log(n+d+'3^^^^3')

브라우저 콘솔 또는 http://jsfiddle.net/2qwvrvcw/ 에서 테스트하십시오 .


1

자바 스크립트 (203)

u="_";s=" ";for(i=64;i>1;i--)console.log(s.repeat(64-i)+"3^^"+".".repeat(i*2-1)+"^3\n"+s.repeat(64-i)+"\\"+u.repeat(i)+s.repeat(2)+u.repeat(i)+"/\n"+s.repeat(65)+"\\/");console.log(s.repeat(63)+"3^^^^3")

언 골프 드 :

underscore = "_";
space = " ";
for (i = 64; i > 1; i--) console.log(space.repeat(64 - i) + "3^^" + ".".repeat(i * 2 - 1) + "^3\n" + 
                                     space.repeat(64-i) + "\\" + underscore.repeat(i) + space.repeat(2) + underscore.repeat(i) + "/\n" + 
                                     space.repeat(65) + "\\/");
console.log(space.repeat(63) + "3^^^^3");

1

씨# (212211)

using C=System.Console;class P{static void Main(){for(int i=64;i>1;)C.Write(@"{0}3^^{2}.^3
{0} \{1}  {1}/
{3,65}\/
",new string(' ',64-i),new string('_',--i),new string('.',i*2),"");C.Write("{0,69}","3^^^^3");}}

.Net Fiddle (클래스 및 Main 메서드는 공용이어야합니다)

약간 골퍼되지 않음 :

using C = System.Console;
class Program {
  static void Main() {
    for (int i = 64; i > 1; ) {
      C.Write("{0}3^^{2}.^3\n{0} \\{1}  {1}/\n{3,65}\\/\n",
 new string(' ', 64 - i),
 new string('_', --i),
 new string('.', i * 2), "");
    }
    C.Write("{0,69}", "3^^^^3");
  }
}

1

116 112 109 108 (포함 -E)

골프에 대한 나의 첫 번째 시도. 다음과 같이 가져 가십시오.

골프 :

perl -E'map{$_=" $_!^".(($b=63-$_)?"2.$b.$b.^!
 $_ \\_$b 2_$b/
 65\\/":"4!");s#(.)(\d+)#"$1"x$2#eg;y/!/3/;say}0..63'

매우 약간 ungolfed (유지되지 않음 ...) :

map
{
    $b = 63 - $_;
    $_ = " $_!^".($b
        ? "2.$b.$b.^!N $_ \\_$b 2_$b/N 65\\/"
        : "4!");
    s#(.)(\d+)#"$1"x$2#eg;    # behaves exactly as $_ =~ s/(.)(\d+)/"$1"x$2/eg
    y/!N/3\n/;                  # y == tr, so this does $_ =~ tr/!N/3\n/
    say;                        # once more $_ completion, this does say $_ == print "$_\n"
} (0..63);

본질적으로 그것은 다음과 같이 작동합니다 : 3의 각 줄과 중괄호 (이들은 함께 처리됩니다)에 대해 시퀀스 RLE 인코딩을 쓴 다음 디코딩합니다. 규칙은 간단합니다. 숫자 다음에 오는 모든 문자는 해당 문자로 해당 횟수만큼 확장됩니다. 숫자가없는 문자는 그대로 남아 있습니다. 마지막으로 문자 !는 3과N 는 줄 바꿈을 의미합니다 (3은 숫자이므로 반복 횟수로 열심히 참여하기 때문에 인코딩해야 함).

3의 각 줄과 그 중괄호는지도가 생성하는 64 요소 배열의 요소를 가져옵니다. print와 같이 배열을 출력 할 수 있다고 가정 해보십시오. 배열이 주어지면 모든 요소를 ​​구분 기호없이 인쇄합니다.

에 chilemagic의 트릭을 사용했습니다 -E. 고마워

강화 : 두 개의 113 바이트 솔루션이 여기에 빠져 들기 시작했습니다. RLE는 싸움없이 굴복하지 않습니다!

Feeds of Feeds : Perl의 모든 문자열이 자동적으로 여러 줄로되어 있기 때문에 \ n의 특수 음역이 필요하지 않다는 것을 알게되었습니다! 따라서 RLE는 루비의 등에 더 가까이 붙어 있습니다! 이제 109 바이트입니다.

고통스러운 깨달음 : 캐릭터를 올바르게 세는 것은 생각보다 어렵습니다. 고군분투 한 후에, 나는 정착했다

에코 $ ((wc -c <<<'golf' -1))
(-1, 스크립트 끝에서 LF를 계산하기 때문에). 또한 할당을 재정렬하고 1 바이트를 저장하여 108 바이트로 설정했습니다.


0

MATLAB (325)

m=127:-2:0;n=0:63;p='UniformOutput';q=false;f=@ones;g=@arrayfun;a=g(@(x,y)[f(1,y)*' '  '3^^' f(1,x)*'.'  '^3'],m,n,p,q);b=g(@(x,y)[f(1,y+1)*' '  '\' f(1,(x-1)/2)*'_' '  ' f(1,(x-1)/2)*'_' '/'],m,n,p,q);a{64}(a{64}=='.')='^';g(@(x,y)fprintf('%s\n%s\n%s\n',x{:},y{:},[f(1,65)*' ' '\/']),a,b),fprintf(repmat('\b',1,137))

언 골프 :

m=127:-2:0;
n=0:63;
p='UniformOutput';
q=false;
f=@ones;
g=@arrayfun;
a=g(@(x,y)[f(1,y)*' '  '3^^' f(1,x)*'.'  '^3'],m,n,p,q);
b=g(@(x,y)[f(1,y+1)*' '  '\' f(1,(x-1)/2)*'_' '  ' f(1,(x-1)/2)*'_' '/'],m,n,p,q);
a{64}(a{64}=='.')='^';
g(@(x,y)fprintf('%s\n%s\n%s\n',x{:},y{:},[f(1,65)*' ' '\/']),a,b),fprintf(repmat('\b',1,137))

MATLAB (252)

n=0;f=@ones;g=@arrayfun;for i=127:-2:0 if n~=63 y=f(1,i)*'.';else y='^';z='';end;fprintf('%s\n%s\n%s\n',[f(1,n)*' '  '3^^' y  '^3'],[f(1,n+1)*' '  '\' f(1,(i-1)/2)*'_' '  ' f(1,(i-1)/2)*'_' '/'],[f(1,65)*' ' '\/']);n=n+1;end;fprintf(repmat('\b',1,137))

언 골프 :

n=0;  
f=@ones;
g=@arrayfun;
for i=127:-2:0 
    if n~=63 
        y=f(1,i)*'.';
    else y='^';
        z='';
    end
    fprintf('%s\n%s\n%s\n',[f(1,n)*' '  '3^^' y  '^3'],[f(1,n+1)*' '  '\' f(1,(i-1)/2)*'_' '  ' f(1,(i-1)/2)*'_' '/'],[f(1,65)*' ' '\/']);
    n=n+1;
end
fprintf(repmat('\b',1,137))

0

PHP 214

캐릭터 수를 세기 전까지는 잘하고 있다고 생각했습니다. 어쨌든 여기 있습니다.

<?function a($n,$v=" "){for($j=0;$j<$n;$j++){$r.=$v;}return $r;}for($i=64;$i>1;$i--){$b=a($i-1,"_");$v.=a(64-$i)."3^^".a($i*2-1,".")."^3\n".a(64-$i+1)."\\".$b.a(2).$b."/\n".a(65)."\/\n";}$v.=a(63)."3^^^^3";echo $v;

콘솔로 출력 만 변경하면 최대 11 자 ( &nbsp;-> ' ', <br>-> \n) 를 저장할 수 있습니다
avall

또한 <?코드 시작 부분에 추가 해야합니다. 함수가 아니라 유효한 프로그램이어야합니다.
avall

아 맞다 고마워, 당신이 제안한 팁, 나는 소스 코드와 달리 페이지 출력을 기반으로하고 있었다. 소스 코드도 괜찮을 것 같아요 :)
Peter

194 문자로 <?function a($n,$v=" "){return str_repeat($v, $n);}for($i=64;$i>1;){$b=a($i-1,"_");$v.=a(64-$i)."3^^".a($i*2-1,".")."^3\n".a(65-$i--)."\\$b".a(2)."$b/\n".a(65)."\/\n";}$v.=a(63)."3^^^^3";echo$v;
골프

md5 확인 : php grahams.php | md5sum:c84d0e20eac2a7f891ab42a8eb77759f -
avall

0

루아-174

p=print a=" "b="_"for i=0,62 do j=63-i p(a:rep(i).."3^^."..(".."):rep(j).."^3")p(a:rep(i+1).."\\"..b:rep(j).."  "..b:rep(j).."/")p(a:rep(65).."\\/")end p(a:rep(63).."3^^^^3")

그 전에 알고리즘 적으로 다른 두 가지 솔루션 (둘 다 182!)을 얻었습니다.

a=" "b="_"for i=0,62 do j=63-i print(a:rep(i).."3^^."..(".."):rep(j).."^3")print(a:rep(i+1).."\\"..b:rep(j).."  "..b:rep(j).."/")print(a:rep(65).."\\/")end print(a:rep(63).."3^^^^3")

a=" "b="_"i=63 while i>0 do c=b:rep(i/2)for _,s in pairs{"3^^."..(".."):rep(i/2).."^3","\\"..c.."  "..c.."/","\\/"}do print(a:rep(66-#s/2)..s)i=i-1 end end print(a:rep(63).."3^^^^3")
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.