出力グラハム数


16

ウィキペディアからグラハムの数のこの表現の64層すべてを出力するプログラムを作成します。

  グラハムの数

あなたの出力が正確に一致する必要があります(ここで、このASCIIバージョンを^表しKnuthのアップ矢印スラッシュとアンダースコアの組み合わせとは、大規模な水平方向の中括弧を表します):

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のレイヤーがあり、末尾のスペースがなく^、ドットの前に2つがあり、後に1つだけがあることに注意してください。

出力のMD5ハッシュは正確にc84d0e20eac2a7f891ab42a8eb77759fである必要1ad3b10d06e38693436c14958b2c47a8があります。または、末尾に改行がある場合(これは問題ありません)。

バイト単位の最短コードが優先されます。stdoutへの出力。入力はありません。


3
なぜそれらは点であり、上向きの矢印ではないのですか?写真の楕円の目的は、欠落している矢印を表示することだけであると確信しています。
raptortech97 14

4
@ raptortech97欠落している矢印がたくさんあるからです。グラハムの数は血まみれの大規模です。私は、どの言語が実際にそれを処理できるかを知りたいと思っています。
フアンドン14

4
楕円は上向き矢印記法使用しなくても表現できない矢の数を表す
エリックTressler

2
@fuandon宇宙サイズのコンピューターを許可したとしても、実際に数値を計算するための言語を取得することはありません。それは単純に大きすぎます。右端の桁で任意の量を計算できると思いますが、それは同じではありません。
タリー14

10
迅速な検証のためにMD5ハッシュを提供する価値があるかもしれません:1ad3b10d06e38693436c14958b2c47a8grcによって与えられるように、またはc84d0e20eac2a7f891ab42a8eb77759f最後の改行文字を省略できる場合。
18

回答:



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'

例:

$ python grahams.py | md5
1ad3b10d06e38693436c14958b2c47a8

その出力はどういう意味ですか?
フアンドン14

13
それは、彼が上記の巨大なアスキー出力を再現して回答をスパム送信したくないことを意味します。
エリックトレスラー14

1
ああ、結構。わかった、結果はハッシュされた。
フアンドン14

forループをwhileループに置き換えます。
qwr 14

8

Perl-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"

編集:文字列の補間でエラーが発生し、perlは$ m3が変数であると考えたため、2文字を追加して修正する必要がありました。$ mを$に変更して解決しました。

NINJA EDIT: ""のインスタンスを$に置き換え、2文字を保存

NINJA EDIT 2:キャラクターを保存するために-Eを付けてprintの代わりにsayを使用できることを指摘してくれた@chilemagicに感謝します。

NOT-SO-NINJA EDIT 3:@Naxのソリューションは私の古いソリューションを打ち負かしたので、その地位を維持するために少し強化しました。


あなたがページを下に移動したとき、私は文字通りPerlの回答を投稿しようとしていました(ただし、数文字長くなりました)。ループの内側と外側で$ mを使用して冗長性を減らす方法が気に入っています。
驚異的な

1
say代わりに使用printし、-E代わりに-e(Perlのバージョンが十分に高い場合)で実行できます。いいね
hmatt1 14

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
畜生!それは私が数秒で忍者になったことの2倍です。ただし、+1前にドットを削除して追加するだけで、キャラクターを保存できるかもしれません"^3"
14

@comperendinous良い点、ありがとう。
レイ14

あなたは「\\」で++「\\」置き換えることができます
誇りhaskeller

4

C 161 182

(私はこの方法を最大限に活用したと思う、多分私はもっとゴルフダウンできる新しいものを見つける必要がある)
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

Bash + coreutils、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

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

ブラウザコンソールまたはhttp://jsfiddle.net/2qwvrvcw/でテストします。


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

ゴルフをしていない:

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(クラスと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

Perl、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'

非常にわずかに変更されていない(メンテナンスされていない...):

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-encodedを書き込み、デコードします。ルールは単純です。数字が続くすべての文字は、その文字数だけその文字に拡張されます。数字のない文字はそのままです。最後に、文字!は3を示し、a Nは改行を意味します(3は数字であり、繰り返しの回数として熱心に参加するため、エンコードする必要がありました)。

3の各行とその中括弧は、マップが生成している64要素配列の要素を取得します。printのように、配列を出力できます。配列を指定すると、すべての要素が(セパレータなしで)印刷されます。

でchilemagicのトリックを使用しました-E。ありがとう。

強化: 2つの113バイトのソリューションがここに潜み始めました。RLEは戦いなしでは屈服しない!

フィードのクレンジング:Perlのすべての文字列が自動的に複数行になっているため、\ nの特別な音訳は必要ないことがわかりました。したがって、RLEはRubyの背中に近づきます!現在は109バイトです。

啓発の苦痛:キャラクターを適切に数えることは、私が思ったより難しい。苦労した後、私は

echo $((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

ああ、ありがとう、あなたが示唆したヒント、私はソースコードではなくページ出力に基づいていました(/ nは行を壊さず、隣り合った2つの ''はまだスペースを1つしか作っていません)ソースコードも問題ないはずです:)
ピーター14

194文字までGolfed:<?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チェック:php grahams.php | md5sumc84d0e20eac2a7f891ab42a8eb77759f -
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")

その前に、私は2つのアルゴリズム的に異なるソリューションを得ました(両方とも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.