Çıktı Graham Sayısı


16

Graham'ın numarasının bu sunumunun 64 katmanının tamamını Wikipedia'dan çıkaran bir program yazın :

  Graham'ın numarası

Çıktınız tam olarak eşleşmelidir bu ASCII sürümü (ki ^temsil Knuth'un yukarı oklar eğik çizgiler ve kombinasyonlarını ve alt çizgiler büyük yatay süslü parantez temsil):

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 katman bulunduğuna, sondaki boşluk olmadığına ve iki ^noktadan önce ve yalnızca bir tanesinin sonra gerçekleştiğine dikkat edin.

MD5 hash Çıktı kesin olmalıdır c84d0e20eac2a7f891ab42a8eb77759f, ya da 1ad3b10d06e38693436c14958b2c47a8(ok olan) bir sondaki yeni satır varsa.

Bayt cinsinden en kısa kod kazanır. Stdout'a çıktı. Hiçbir girdi yok.


3
Neden daha fazla ok değil, noktalar? Eminim resimdeki elipslerin amacı sadece eksik okları göstermekti.
raptortech97

4
@ raptortech97 Çünkü çok sayıda eksik ok var. Graham'ın sayısı çok büyük. Hangi dillerin gerçekten üstesinden gelebileceğini merak ediyorum.
fuandon

4
Elipsler, yukarı ok gösterimi kullanılmadan bile temsil edilemeyen ok sayısını temsil eder
Eric Tressler

2
@ fuandon Sayıyı hesaplamak için herhangi bir dil alamazsınız, evren büyüklüğünde bir bilgisayara izin verseniz bile, bu çok basit. Sanırım keyfi olarak büyük miktarda en sağdaki rakamları hesaplayabilirsiniz, ancak bu aynı değildir.
Tally

10
Hızlı doğrulama için MD5 karmalarını vermeye değer olabilir: 1ad3b10d06e38693436c14958b2c47a8grc tarafından verildiği gibi veya c84d0e20eac2a7f891ab42a8eb77759fson satırsonu karakteri atlanabilirse.
comperendinous

Yanıtlar:



9

Python, 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'

Misal:

$ python grahams.py | md5
1ad3b10d06e38693436c14958b2c47a8

Bu çıktı ne anlama geliyor?
fuandon

13
Bu, yukarıdaki büyük ascii çıktısının çoğaltılmasıyla cevapları spam etmek istemediği anlamına geliyor.
Eric Tressler

1
Ah, yeterince adil. Şimdi anladım, sonuç karma oldu.
fuandon

For döngüsü bir while döngüsü ile güzel değiştirme.
qwr

8

Perl - 113 (-E için 112 + 1)


golfed:

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

Ungolfed:

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

EDIT: Perl $ m3 bir değişken olduğunu düşündüm dize enterpolasyon bir hata oluştu, bu yüzden bunu düzeltmek için 2 karakter eklemek zorunda kaldı.$ M yerine $ değiştirilerek çözüldü.

NINJA DÜZENLEME: "" yerine $ "değiştirildi.

NINJA DÜZENLEME 2: Bir karakteri kaydetmek için -E ile yazdır yerine say diyebileceğimi işaret ettiğin için teşekkürler @chilemagic.

NOT-SO-NINJA EDIT 3: @ Nax'ın çözümü eski çözümümü yendi, bu yüzden onun yerini tutmak için biraz parlattım.


Kelimenin tam anlamıyla sizin sayfanızı aşağı kaydırdığınızda Perl yanıtı (birkaç karakter daha uzun olsa da) göndermek üzereydim. Artıklığı azaltmak için döngü içinde ve dışında $ m kullandığınızı seviyorum.
comperendinous

1
Bunun sayyerine kullanabilirsiniz printve ardından ile çalıştırabilirsiniz.-E yerine -e(Perl versiyonu yeterince yüksek ise). Yine de harika görünüyor!
hmatt1

7

Haskell, 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
Lanet olsun! Bu iki kere saniyeler içinde ninja edilmiştim. Sanırım size bir karakter kaydedebilirim, eğer daha +1önce noktayı kaldırır ve eklerseniz "^3".
muazzam

@comperendinous İyi nokta, teşekkürler.
Ray

"\\" ++ '\' ile değiştirebilirsiniz:
gururlu haskeller

4

C 161182

(Ben bu yöntemi maxed düşünüyorum, belki ben daha aşağı golf olabilir yeni bir tane bulmak gerekir)
C99 olarak derlemek!

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

Bash + coreutils, 150

Bundan daha iyisini yapabileceğimi düşündüm. Oh iyi.

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

Çıktı:

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

1

STATA 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

JavaScript 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')

Tarayıcı konsolunuzda veya http://jsfiddle.net/2qwvrvcw/ adresinde test edin .


1

Javascript (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")

Ungolfed:

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

C # (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 (sınıf ve Ana yöntemin herkese açık olmasını gerektirir)

Hafifçe soluksuz:

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

Perl, 116 112 109 108 (dahil -E)

İlk golf girişimim. Lütfen şu şekilde alın:

golfed:

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

Çok hafifçe dişsiz (korunmaz ...):

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);

Temelde şu şekilde çalışır: 3'lerin her satırı ve bir küme ayracı için (bunlar birlikte ele alınır), RLE kodlu dizilerini yazar , sonra kodunu çözer. Kural basittir: bir sayı ve onu izleyen her karakter o karaktere bu sayıda genişletilir. Numarasız karakterler yalnız bırakılır. Son olarak, karakter !bir 3 ve bir Nyeni satır anlamına gelir (3 sayı olduğu için kodlanması gerekiyordu ve tekrar sayısı olarak hevesle katılacaktı).

3'lerin her satırı ve ayracı, haritanın oluşturduğu 64 elemanlı dizide bir eleman alır. Diyelim ki baskı gibi diziler de çıktı alabilir - eğer bir dizi verilirse tüm elemanları yazdırır (ayırıcı olmadan).

Ben chilemagic'in hile kullandım -E. Bunun için teşekkürler.

Takviyeler: İki 113 baytlık çözüm burada gizlenmeye başladı. RLE dövüşmeden yenilmez!

Yemlerin Temizlenmesi : Artık, \ n özel harf çevirisi gerekmediğini fark ettim, çünkü Perl'deki tüm dizeler otomatik olarak çok satırlıdır! Böylece RLE, Ruby'nin sırtına daha yakın yapışır! Şimdi 109 byte.

Canlandırıcı Aydınlanma : Karakterleri doğru saymak düşündüğümden daha zor. Biraz uğraştıktan sonra,

echo $ ((wc -c <<<'golf' -1))
(-1, çünkü komut dosyasının en sonunda bir LF sayar). Dahası, ödevlerimi yeniden düzenledim ve 1 karakter kazandım, böylece 108 bayt'a yerleştim.


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))

ungolfed:

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))

ungolfed:

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

Karakterleri sayana kadar iyi olduğumu sanıyordum, yine de burada -

<?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;

Çıkışı yalnızca konsola değiştirmek için 11 karaktere kadar ( &nbsp;-> ' ', <br>-> \n) kaydedebilirsiniz
avall

Ayrıca, <?kodun başına eklemeniz gerekir - bu bir işlev değil, geçerli bir program olmalıdır.
avall

Ah sağ teşekkürler ve önerdiğiniz ipuçları, kaynak kodun aksine benim sayfa çıktısını temel alıyordum, (/ n çizgiyi kesmeyecek ve yan yana iki `` hala sadece 1 boşluk bırakacak), bu yüzden Kaynak kod da iyi olmalı sanırım :)
Peter

194 karaktere kadar golf oynadı: <?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;
avall

md5 kontrol: php grahams.php | md5sum:c84d0e20eac2a7f891ab42a8eb77759f -
avall

0

Lua - 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")

Bundan önce, algoritmik olarak farklı iki çözüm buldum (her ikisi de 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")
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.