Piのスライスを焼く


82

この正確なテキスト(142文字で構成される)を印刷または出力するプログラムまたは関数を作成します。

()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|

プログラムは入力を行わず(これが不可能な言語などを除くsed)、上記のテキスト(および上記のテキストのみ)を出力として生成する必要があります。末尾の改行は許容されます。

これはであるため、最短回答(バイト単位)が優先されます。


9
@RohanJhunjhunwalaこれが圧縮できることを証明するために、Luis Mendoが行いました
エリックアウトゴルファー

1
笑、私は間違っていると証明されました(そして嬉しいです!)
Rohan Jhunjhunwala

2
あなたはそれらに整数入力Nを()させて、一番上の数がNであるスライスを出力させました。それは非常に複雑です。
user6245072

5
ご存じのとおり、小数点以下43桁のπが必要です。
エリックアウトゴルファー

4
人生の意味にとても近い…。
A.ミラボー

回答:


90

MATL70 68 67バイト

'()'12:)l10:&<toYP43Y$51hb(!10Xy'\::\'FFhZ++'|'3$Yc'||\'3:(95'Zd'o(

オンラインでお試しください!

説明

どのような混乱。しかし、ちょっと、畳み込みがあります!

特定のステートメントの後にスタックの内容を調べることができれば、説明はより明確になります。それを行うには、X#0$%その時点で挿入するだけです。(つまりX# 、スタックの内容を0$表示し、暗黙的に何も表示せず、%残りのコードをコメントアウトします)。たとえば、畳み込みの直後のスタックを参照してください

'()'       % Push this string
12:        % Range [1 2 ... 12]
)          % Index into string (modular, 1-based): gives '()()()()()()'
l          % Push 1 (will be used later)
10:        % Range [1 2 ... 10]
&<         % All pairwise "less than" comparisons. Gives matrix with "true"
           % below the main diagonal, and the remining entries equal to "false"
to         % Duplicate. Convert to numbers (true becomes 1, false becomes 0)
YP43Y$     % Compute pi with 43 significant digits (42 decimals). Gives a string
51h        % Append last decimal, '3' (ASCII 51). This is needed to avoid rounding
b          % Bubble up the true-false matrix, to be used as logical index
(          % Fill the chars from the pi string into the 0-1 matrix, at the positions
           % indicated by the true-false matrix. Thus each 1 is replaced by a char
           % from the pi string. Entries that were 0 remain as 0. This is done in
           % columm-major order...
!          % ...so transpose to make it row-major
10Xy       % Identity matrix of size 10
'\::\'     % Push this string...
FFh        % ...and append two zeros
Z+         % 2D convolution keeping size. The identity matrix convolved with the
           % above string gives the diagonal bands with chars '\'  and ':'
+          % Add to the matrix containing the digits of pi. At each entry, only one
           % of the two matrices is nonzero
'|'        % Push this string
3$Yc       % Three-input string concatenation. This prepends the 1 (which was pushed
           % a while ago) and appends '|' to each row of the matrix. This converts
           % the matrix to char. Note that char 1 will be displayed as a space. We
           % used char 1 and not char 0 (which would be displayed as a space too)
           % because function `Yc` (`strcat`) strips  off trailing space from the
           % inputs, counting char 0 as space, but not char 1
'||\'      % Push this string
3:(        % Assign it to the first 3 entries of the matrix (column-major), that is, 
           % to the top of the first column
95         % Push ASCII for '_'
'Zd'o      % Push string 'Zd' and convert to numbers: gives [90 100]. These are the
           % (column-major) indices where the '_' char should appear in the last row
(          % Fill those chars
           % Implicitly display. (Chars 0 and 1 are displayed as space)

14
ルイス・メンドー、これは印象的です。できれば2回投票します。これは非圧縮性のコルモゴロフの挑戦だと思いました。間違ったことを証明してくれてありがとう!
ローハンジュンジュンワラ

3
@Rohan優しい言葉をありがとう!
ルイスメンドー

1
:D問題ありません!:D
ローハンジュンジュンワラ

3
:)コードに表示される+1 。
エリックアウトゴルファー

2
@ニール人生の明るい面を見る...
エリックアウトゴルファー

37

Perl、93バイト

$_=bpi$=;printf'()'x6x!$`.'
%12s',F.ee x!$\--^substr"\32::\\$&|",-12while/.{$\}/g

-l71Mbignum=bpi14としてカウントされるコマンドラインオプションが必要です。これ\32は、リテラル文字26に置き換える必要があります。

サンプルの使用法

$ perl -l71Mbignum=bpi pi-slice.pl
()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|

Perl、111バイト

$_=bpi$_*($l=($.=$_)-3);printf'()'x($./2)x!$`."
%$.s",F.ee x!$l--^substr"\32::\\$&|",-$.while/.{$l}/g

パラメータ化されたバージョン。-nMbignum=bpi12としてカウントされるコマンドラインオプションが必要です。

サンプルの使用法

$ echo 10 | perl -nMbignum=bpi pi-slice.pl
()()()()()
|\3.14159|
|:\265358|
\::\97932|
 \::\3846|
  \::\264|
   \::\33|
    \::\8|
     \__\|

$ echo 20 | perl -nMbignum=bpi pi-slice.pl
()()()()()()()()()()
|\3.141592653589793|
|:\2384626433832795|
\::\028841971693993|
 \::\75105820974944|
  \::\5923078164062|
   \::\862089986280|
    \::\34825342117|
     \::\0679821480|
      \::\865132823|
       \::\06647093|
        \::\8446095|
         \::\505822|
          \::\31725|
           \::\3594|
            \::\081|
             \::\28|
              \::\4|
               \__\|

25

JavaScript(ES6)、187 174バイト

これは、プレーンテキストを表示するより1バイト短くなります。

for(y=n=0,s=`()()()()()()
`;y<10;y++,s+=`|
`)for(x=-2;x++<9;)s+=x>y?(Math.PI+'2384626433832795028841971693')[n++]:`\\${y>8?'__':x+1|y>2?'::':'||'}\\`[y-x]||' ';console.log(s)


1
console.log( "")+ 12 * 11文字+ 18のバックスラッシュ+ 10の改行よりも1バイト短くないですか?
タイタス

@タイタス-そのとおりです。バックスラッシュのエスケープを数えるのを忘れていました。ありがとう!
アーナウルド

18
やや興味深いが、2384626433832795028841971693はたまたま素数です。
ElementW

1
@ElementW-あなたがそれについて言及したのは面白い、私もそれをチェックしたからだ。:)
アーナルド

数値を16進数として書き込み、それを文字列に変換すると、バイトが節約されますか?
ニックハートリー

17

Python 2、131バイト

print'()'*6+'\n|\\3.1415926|\n|:\\53589793|'
for n in 2384626,433832,79502,8841,971,69,3,'':print'%11s|'%('\%s'*2%('_:'[n<'']*2,n))

Sp3000とLynnの共同作業。銅もバイトを節約しました!イデオネのリンク。


それはエレガントです+1
エルペドロ

forループ内の括弧を削除することにより、1バイトを節約できるはずです。

16

///129 127バイト

/-/\\\\//&/--::--//%/  //#/|
%//!/()()/!!!
|-3.1415926|
|:-53589793|
&2384626|
 &433832#&79502# &8841#%&971#% &69#%%&3#%% -__-|

オンラインでお試しください!


あなたがしなければ-2バイト/!/()()/!!!の代わり()()()()()()と置き換える/#/|\n%%//#/|\n%/、それはそれで動作させるために、コードの残りの部分を調整します。
アクロリス

@daHugLennyああ、ありがとう。私は4 * 3が交換の有効な候補だとは知りませんでした。2番目の提案については、もっと長くなると思います。
エリックアウトゴルファー

@daHugLenny ^^ 2番目の提案が実際より長いことを確認できます。
エリックアウトゴルファー


@DestructibleWatermelon私は意図的にそれをしました。:そこ他の面もあり-::-:--__-
エリックアウトゴルファー

12

バッシュ、153バイト

cat << _
()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|
_

9
文字通りのパイを印刷するよりも長いコードを生成するというtrapに陥った他の答えの数を考えると、これは確かに賢明な答えだと思います。また、私のカウントではたった153バイトです。
リン

3
@Lynnただし、ゴルフを試みずにサンプルを出力にダンプしているだけなので、お勧めしません。少なくとも、他の答えは...努力を
ベータ崩壊

の前後のスペースを削除できます<<。また、バイトカウントは153バイトです。
TuxCrafting

1
echo '()()()()()()...\__\|'4バイトは短くないですか?
ニール

@リン私はその問題を持っていなかったことがうれしいです。バッチでは、単にパイを印刷するために100バイトのオーバーヘッドが必要です。
ニール

9

バッチ、195バイト

@echo ()()()()()()
@echo ^|\3.1415926^|
@echo ^|:\53589793^|
@set i=\
@for %%d in (2384626 433832 79502 8841 971 69 3)do @call:l %%d
@echo %i%__\^|
@exit/b
:l
@set i= %i%
@echo%i%::\%1^|

5

Turtlèd135 129バイト(非競合)

(インタープリターは実際には少しバグゲッドではありません(もう::))が、このプログラムには影響しません

プログラムを再構築して書き直すことで、ゴルフをしました... 6バイト

そして今、私は新しい説明をしなければなりません...

それでも短い問題になる可能性があります


少なくともこの言語での最善の解決策は、生データを書き込むだけではありません¯\ _(ツ)_ /¯


#3.141592653589793238462643383279502884197169#")()()()()()">10:[)'|l]:[)d'\l]d"(||"2uuu[|;"::"uuu];>"__"[|r'\d]dl[ l[|.+l][\r]ul]

オンラインで試す

説明

正直なところ、これは実際のプログラムをあまりよく説明していませんが、コマンドについてのヒントを提供するので、少しよく理解できるかもしれません

#3.141592653589793238462643383279502884197169# Some pi. Set the string to thing between #s
                                               the last digit was same as first, and the
                                               string wraps, so digit could be removed
")()()()()()"  Write this string, by writing char 1 to current cell, moving right, char 2...

>              turn right

10             set register to ten

:[)'|l]:       move right by amount in register, while current cell isn't ), write |
               and move left. move right by amount in register

[)d'\l]        while cell is not (, move down, write \, move left

d"(||"         move down and string-write "(||"

2              set register to 2

uuu[|;"::"uuu] Move up three, and while the cell is not |, move down by
               register (2), string-write "::", move up three

               Just remember the turtle is currently pointing right, so up is right.

;>"__"         move down by amount in register, turn right, string-write "__"

[|r'\d]dl      while cell is not |{ move right, write \, move down}, move down, left

複雑なこと:ネストされたループ

[ l[|.+l][\r]ul]

現在のセルがスペースではない間{左に移動、ループを実行:(セルではなく|、文字列変数の現在の文字を書き込み(piを覚えていますか?)、文字列ポインタをインクリメント、左に移動)、ループを実行:右に移動)、上に移動、左}


競合しない理由
Programmer5000

競合していないということは、チャレンジよりも新しいことを意味します
Destructible Lemon

5

フーリエ、196 190バイト

新機能アラート!

コード

|SaCaaSa|f|~Y0~jY(32aj^~j)|w6(40a41ai^~i)10a~N124a~W92a~S3o46a1415926oWaNaWa58a~CSa53589793oWaNaf2384626oWaNa1wf433832oWaNa2wf79502oWaNa3wf8841oWaNa4wf971oWaNa5wf69oWaNa6wf3oWaNa7wSa95aaSaWa

説明

このプログラムは、フーリエ関数の最初のデモです。

関数は次のように定義されます:

|code goes here|f

最初のパイプは関数宣言を開始します。次に、パイプの間にコードを配置します。最後のパイプで関数宣言が終了します。最後に、fは関数が保存される変数です。予約された関数でない限り、これには任意の文字を使用できます。

たとえば、私のコードでは、関数sの1つは次のとおりです。

|SaCaaSa|f

変数にSは番号92がC格納され、番号58が格納されます。

呼び出されると、関数は次を出力します。

\::\

それはパイの中で最も繰り返されるものだからです。

同様に、出力を下げるために、ループを使用しました。

6(40a41ai^~i)

コードを40a41a6回繰り返します。40a41a独自の出力で:

()

したがって、コードを6回繰り返して出力します。

()()()()()()

これにより、パイのクラストを出力します。

FourIDEでお試しください!

Pythonインタープリターに関数を実装していないため、このプログラムはhttp://tryitonline.netでは機能しません。


4

Pyth、89バイト

J_2K+.n0."09\07´\C2\84J\01£\07Nl:?í"*"()"6Vr9Zp*dJp?!Z\|?qZ9"|:""\::"p\\p:KZ+ZN\|=+ZN=hJ)p*dJ"\__\|"

オンラインでお試しください!

\xxこの回答からコードをコピー/貼り付けする場合は、(16進数)を対応するASCII文字に置き換えます。SEが除外するパックされた文字列に印刷できない文字が含まれています。

説明

J_2        Sets J to -2
  .n0      Pi; returns 3.141592653589793
  ."(...)" Packed string; returns "2384626433832795028841971693"
 +         Concatenation; returns "3.1415926535897932384626433832795028841971693"
K          Sets K to that string
*"()"6     Repetition; returns "()()()()()()", which is implicitly printed with a newline
 r9Z       Range; returns [9, 8, 7, 6, 5, 4, 3, 2, 1] (Z is initialized to 0)
V          Loop through r9Z, using N as the loop variable
  *dJ      Repetition; d is initialized to " " (returns an empty string if J <= 0)
 p         Print without a newline
  ?!Z      Ternary; if not Z
   \|      then return "|"
   ?qZ9    else, ternary; if Z == 9
    "|:"   then return "|:"
    "\::"  else, return "\::"
 p         Print without a newline
  \\       One-character string; returns "\"
 p         Print without a newline
  :KZ+ZN   Slice; returns K[Z:Z+N], not including K[Z+N]
 p         Print without a newline
 \|        One-character string; returns "|", which is implicitly printed with a newline.
 =+ZN      Adds N to Z
 =hJ       Increments J by 1
)          Ends loop
 *dJ       Repetition; d is initialized to " "
p          Print without a newline
"\__\|"    Returns "\__\|", which is implicitly printed with a newline

4

ゼリー、83 バイト

確かにまだかなりゴルフアバレ

7Ḷ⁶ẋ;€“\::\”“|:\”ṭṙ7
⁾()ẋ6⁷⁾|\8ØPæp”|⁷8RUR€µ“⁾ḅ|Za"~ṅỵþȷ^ṇ⁷Ċ’Dṁ;€”|ż@¢Y⁷ø⁶ẋ7“\__\|”

TryItOnline

どうやって?

7Ḷ⁶ẋ;€“\::\”“|:\”ṭṙ7 - Link 1, left side padding and filling
7Ḷ                   - lowered range of 7 ([0,1,2,3,4,5,6])
      “\::\”         - filling ("\::\")
  ⁶ẋ;€               - space character repeated that many times and concatenate for each
            “|:\”    - top crust edge filling ("|:\")
                 ṭ   - tack (append to the end)
                  ṙ7 - rotate to the left by 7 (move top crust filling to the top)

⁾()ẋ6⁷⁾|\8ØPæp”|⁷8RUR€µ - Main Link (divided into two for formatting)
⁾()ẋ6⁷                  - "()" repeated 6 times and a line feed
      ⁾|\               - "|\"
          ØP            - pi
         8  æp          - round to 8 significant figures (top edge of the glaze)
              ”|⁷       - "|" and a line feed
                 8R     - range of 8 ([1,2,3,4,5,6,7,8])
                   U    - reverse ([8,7,6,5,4,3,2,1])
                    R€  - range for each ([[1,2,..8],[1,2,..7],...,[1,2],[1]])
                      µ - monadic chain separation

“⁾ḅ|Za"~ṅỵþȷ^ṇ⁷Ċ’Dṁ;€”|ż@¢Y⁷ø⁶ẋ7“\__\|” - Main link (continued)
“⁾ḅ|Za"~ṅỵþȷ^ṇ⁷Ċ’                       - base 250 representation of the rest of the digits
                 D                      - decimalise (makes it a list)
                  ṁ                     - mould (into the shape of the array formed above)
                     ”|                 - "|"
                   ;€                   - concatenate for each
                         ¢              - call last link (1) as a nilad
                       ż@               - zip (with reversed operands)
                          Y⁷            - join with line feeds, and another line feed
                            ø           - niladic chain separation
                             ⁶ẋ7        - space character repeated 7 times
                                “\__\|” - "\__\|" the very bottom of the pie wedge

2
うわー、それは私が今まで見た中で最長のゼリープログラムです:O
ベータ崩壊

それは11バイト単位で行うことができます@BetaDecayは間違いない...
ジョナサン・アラン

3

Python 2、193 176バイト

P="3.1415926 53589793 2384626 433832 79502 8841 971 69 3".split()
f="()"*6+"\n|\%s|\n|:\%s|\n"%(P[0],P[1])
for s in range(7):f+=" "*s+"\::\\"+P[s+2]+"|\n"
print f+" "*7+"\__\|"

または、より短く、より退屈な答え:

print r"""()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|"""

3
print r'''(the pie)'''38バイト短いことをご存知ですか?:)
リン

2回目の努力で+1しますが、一重引用符を使用すると、見やすくなります。ピクセルカウントの方が優れています:)
ElPedro

3

C#220 213 209 208 202 201 (171 *)バイト

*これは独創的で不正です

void F()=>Console.Write(@"()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|");

201バイト:

void f(){var s="()()()()()()\n";for(int i=0;i<9;)s+=(i<1?"|":i<2?"|:":"\\::".PadLeft(i+1))+$"\\{new[]{3.1415926,53589793,2384626,433832,79502,8841,971,69,3}[i++]}|\n";Console.Write(s+@"       \__\|");}

220バイト:

ここでゴルフをするものがあると確信しています

void f(){string s="()()()()()()\n",x="       ";for(int i=9,j=0;i>0;j+=i--)s+=(i>7?"|"+(i<9?":":"")+"\\":x.Substring(i)+@"\::\")+$"{Math.PI}32384626433832795028841971693".Substring(j,i)+"|\n";Console.Write(s+x+@"\__\|");}

答えてくれてありがとう!の余分なスペースを削除することで、少なくとも1バイトを節約できます.Substring(j, i)

これはVSの自動書式設定による監視でしたが、とにかく別の方法で束を保存しました=)
pinkfloydx33

円グラフをそのまま返す匿名関数は、25%以上短くなります:()=>@"(pie)"149バイトです。
リン

また、退屈であり、不正行為のように感じます。ルールは、印刷ではなく戻りを言う
-pinkfloydx33

@ pinkfloydx33 コミュニティのコンセンサスに従って、印刷と返却はどちらもデフォルトで許可されています
mbomb007

3

PowerShell、105バイト

'()'*6
'|\3.1415926|
|:\53589793|'
2384626,433832,79502,8841,971,69,3|%{" "*$i+++"\::\$_|"}
' '*7+'\__\|'

オンラインでお試しください!

私がこの課題にどのように回答したかわからない...私はそれと他のいくつかの回答を支持した。まあ、決して遅くないほうがいいですか?

これにより、6つのバランスの取れた括弧が文字列としてパイプラインに配置され、次に次の2行のリテラル文字列(2バイトを保存)が配置されます。次に、残りの数値をループします。各反復は、で$i連結された先頭のスペース()の数を増やします\::<number>|。最後に、パイの先端の文字列を作成します。これらの文字列はすべてパイプライン上に残り、暗黙のWrite-Output間に改行が挿入されます。

これは、パイを印刷するよりも39バイト短くなります


3

、31バイト

×⁶()↙↓¹⁰↖↖¹⁰↓↓²↘⁸M↑__↖←¤:↗¤UGPi

オンラインでお試しください!

あなたは疑問に思うかもしれません:この魔術は何ですか?どうやって満たすことができますUGPiか?さて、チャコールはいつの日かより多くの課題で競争力を高められることを期待して、Wolfram言語のサポートを始めています!

前、71バイト

×⁶()↙↓¹⁰↖↖¹⁰↓↓²↘⁸M↑__↖←¤:↗¤3.141592653589793238462643383279502884197169

オンラインでお試しください!

冗長

Print(Multiply(6, "()"));
Move(:DownLeft)
Print(:Down, 10)
Move(:UpLeft)
Print(:UpLeft, 10)
Move(:Down)
Print(:Down, 2)
Print(:DownRight, 8)
Move(:Up)
Print("__")
Move(:UpLeft)
Move(:Left)
Fill(":")
Move(:UpRight)
Fill("3.141592653589793238462643383279502884197169")

deverbosifierは自動的に文字列を圧縮し、冗長なコマンドを削除しないため、これは異なることに注意してください。

圧縮文字列では、52バイト

×⁶¦()↙↓¹⁰↖↖¹⁰↓↓²↘⁸↑__↖←¤:M↗¤”i¶∧²uτ¶R›    §Q´⌈#_⮌POÞ”

xxd出力

0000000: aab6 ba28 291f 14b1 b01c 1cb1 b014 14b2  ...()...........
0000010: 1eb8 125f 5f1c 11ef 3acd 1def 0469 0a01  ...__...:....i..
0000020: b275 f40a 52be 0999 9fa4 d1e0 1a23 5f86  .u..R........#_.
0000030: d04f de04                                .O..

オンラインでお試しください!


2

PHP、170バイト

PHPにarbritraryの精度Piはありませんか?計算にはコピー&ペーストよりもはるかに多くのスペースが必要です。ここの最後の桁が切り捨てられていても、丸められていなくてもかまいません。しかし、64ビットPiでは、最後の桁が切り上げられます。

for(;$i<11;)echo str_pad($i?["\\__\\","|\\","|:\\","\\::\\"][$i>9?0:min(3,$i)].[3.1415926,53589793,2384626,433832,79502,8841,971,69,3][$i-1]."|
":"
",13,$i++?" ":"()",0);

で実行 php -r '<code>'

コメントなしの内訳

for(;$i<11;)
    echo str_pad($i?
         ["\\__\\","|\\","|:\\","\\::\\"][$i>9?0:min(3,$i)]
        .[3.1415926,53589793,2384626,433832,79502,8841,971,69,3][$i-1]
        ."|\n"
    :"\n"
    ,13,$i++?" ":"()",0);

出力は(あなたがそれを変更することで修正することができた1つのスペースが不足してい1314)。そして、なんらかの奇妙な理由で、あなたは一番上の閉じ括弧が欠けています。変更すると出力が修正されます。
イスマエルミゲル

PHPの回答には<?phpタグが必要です。それ以外の場合は、常に一定の出力を生成します。PHP Hello、World!実際にこれに依存しています。しかし、一定の出力といえば、ちょうどリテラルケーキが含まれており、何のPHPの答えは<?php、すべてのタグが大きなマージンであなたを打つんだろう...
リン・

@Lynn:PHPを使用し<?phpて実行する場合、タグは必要ありません-r
タイタス

2

Python 2、183 171バイト

p,d=[2384626,433832,79502,8841,971,69,3],"|\n"
c=("()"*6)+d[1]+"|\\"+`3.1415926`+d+"|:\\"+`53589793`+d
for x in range(7):c+=" "*x+"\\::\\"+`p[x]`+d
print c+" "*7+"\\__\\|"

本当に賢いことは何もしません。大きな文字列を作成してから出力するだけです。

編集

@Lynnの答えと学習を読んだ後、1​​71に減少しました。提案せずに(恥知らずに)あなたからいくつかのバイトを盗むのが間違っている場合は申し訳ありません。もしそうなら教えてください、私は変更をロールバックします。

出力

python pi.pie.py

()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|

print r'''(the pie)'''28バイト短いことをご存知ですか?:)
リン

@Lynnそれは不正行為ではないですか?;-)
エルペドロ

不正行為ではなく、あまり面白くありません(IMOのすべての言語でその答えは必要ありません。bashの答えで十分です)。このような回答を投稿するときに言及したいことのように、あなたのゴルフの試みが損失に終わったことを認めます。他の誰かがあなたのゴルフのアイデアを取り入れて改善する方法を見つけた場合、投稿する価値があるかもしれません。
ピーターコーデス

私は、@ Peterであなたのコメントを受け取ります。私は失礼なことをしようとしていなかったので、スマイリー。誰でもこのようなASCIIアートチャレンジを印刷できます。私はこれにかなり慣れていないので、学ぶためにここにいます。それが何かを意味する場合、私はそれが単なる印刷物ではなく、私の努力を完全に上回る方法で問題に対処したことがわかったときに、リンの答えにコメントと+1を付けました。私は学びました
...-エルペドロ

あなたの答えがまだ異なるアプローチを持っている限り、他の答えから(同じ言語であるかどうかに関係なく)アイデアを得ることができます。大丈夫ではない唯一のことは、あなたの答えがリンのとまったく同じコードで終わった場合です。通常、他の人の回答にわずかな改善が見られる場合は、コメントでそれを提案します。しかし、他の人の回答を見た後に複数の新しいアイデアがある場合は、改善されたバージョンを新しい回答として投稿することもできます。私はこれのエチケットについて完全に確信していません、しかし、あなたの答えが著しく異なる限り、それは大丈夫だと思います。
ピーターコーデス

2

ルビー、140の 138 137バイト

ルビーのこの問題に対する私の解決策は、これが私の最初のコードのゴルフの答えです:D

[0,2384626,433832,79502,8841,971,69,3,1].map{|n|puts n<1?"()"*6+"\n|\\3.1415926|\n|:\\53589793|":"\\#{n>1?"::\\#{n}":"__\\"}|".rjust(12)}

読みやすいバージョンと説明:

for n in [-1,2384626,433832,79502,8841,971,69,3,0]
  if n < 0 # n == -1
    puts "()"*6+"\n|\\3.1415926|\n|:\\53589793|"
  else
    if n > 0 # digits of pi
      puts "\\::\\#{n}|".rjust(12)
    else # edge of pie
      puts "\\__\\|".rjust(12) 
    end
  end
end

単純なループを使用するだけで、本当に賢いことは何もありません:)

出力:

()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|

2
PPCGへようこそ!素敵な最初の投稿!
Rɪᴋᴇʀ

2

スタックス、63バイト

ü?½Pi<Θ*q}ü¿▒5Ç>cdƒ±<Gw►,─ô╟▒g•iâÑ♠514Φ⌂!Ñεùáèè♂ÑD╔«dÿ47¡ô#UV•╧

オンラインで実行してデバッグします!

受け入れられたMATL回答よりも短い。より多くの桁がStaxの定数piとして保存されている場合は、間違いなく短くなります。

Pi<0コードにはそれは何ですか?)

説明

説明にASCIIを使用します。

.()6*PVP$2ME.|\a+"|:\"a+"!RNyb2L$-!mV=223w+&O-"!{"\::\"s$+mELr"\__\"]+|>m'|+

Expalantion:

.()6*PVP$2ME.|\a+"|:\"a+
.()                           "()"
   6*P                        Print 6 times
      VP$                     First two lines of pi in the output
         2ME                  Push the two lines separately on the stack
            .|\a+             Prepend the first line with "|\"
                 "|:\"a+      Prepend the second line with "|:\"

"..."!{"\::\"s$+mELr"\__\"]+|>m'|+
"..."!                                [2384626,433832,79502,8841,971,69,3]
      {"\::\"s$+m                     Convert each element to a string and prepend "\::\"
                 ELr                  Prepend the first two lines to array
                    "\__\"]+          Append "\__\" to the converted array
                            |>        Right align text
                              m'|+    Append "|" to each array element and print

1

Java 7、260 236 191バイト

String d(){return"()()()()()()\n|\\3.1415926|\n|:\\53589793|\n\\::\\2384626|\n \\::\\433832|\n  \\::\\79502|\n   \\::\\8841|\n    \\::\\971|\n     \\::\\69|\n      \\::\\3|\n       \\__\\|";}

ため息、単に円を出力することは、エスケープされたバックスラッシュがすべてある場合でも短くなります。>。>
ここに、少し汎用性のある以前の答えがあります

String c(){String n="\n",p="|",q=p+n,x="\\::\\",s=" ",z=s;return"()()()()()()"+n+p+"\\"+3.1415926+q+p+":\\53589793"+q+x+2384626+q+s+x+433832+q+(z+=s)+x+79502+q+(z+=s)+x+8841+q+(z+=s)+x+971+q+(z+=s)+x+69+q+(z+=s)+x+3+q+(z+=s)+"\\__\\|";}

Javaでは、一般的なアプローチよりも、あまり凝ったことなく結果を出力するだけで済むので、かなり退屈な答えです。

未ゴルフ&テストコード:

ここで試してみてください。

class M{
  static String c(){
    String n = "\n",
           p = "|",
           q = p + n,
           x = "\\::\\",
           s = " ",
           z = s;
    return "()()()()()()" + n + p + "\\" + 3.1415926 + q + p + ":\\53589793" + q + x + 2384626 + q + s
            + x + 433832 + q + (z += s) + x + 79502 + q + (z += s) + x + 8841 + q 
            + (z += s) + x + 971 + q + (z += s) + x + 69 + q + (z += s) + x + 3 + q
            + (z += s) + "\\__\\|";
  }

  public static void main(String[] a){
    System.out.println(c());
  }
}

出力:

()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|

1

Qbasic、175バイト

?"()()()()()()":?"|\3.1415926|":?"|:\53589793|":?"\::\2384626|":?" \::\433832|":?"  \::\79502|":?"   \::\8841|":?"    \::\971|":?"     \::\69|":?"      \::\3|":?"       \__\|"

1

Lua、152バイト

print[[()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|]]

このpiを圧縮できなかったかもしれないので試してください。

Luaはそれを行うにはあまりにも冗長で、サイズが大きいかもしれませんが、これではありません。

別のソリューション、186バイト。

s="()()()()()()\n|\\3.1415926|\n|:\\53589793|\n"i=0 for z in('2384626|433832|79502|8841|971|69|3|'):gmatch'.-|'do s=s..(' '):rep(i)..'\\::\\'..z.."\n"i=i+1 end print(s..'       \\__\\|')

迷惑なことに、Luaの円周率は円周率を埋めるほど正確ではありません。:(


1

Javascript、172バイト

コンソールに貼り付けて実行します。

for(y=n=0,s=`()()()()()()
`;y<10;y++,s+=`|
`)for(x=-2;x++<9;)s+=x>y(Math.PI+'2384626433832795028841971693'[n++]:`\\${y>8?'__':x+1|y>1?'::':'||'}\\`[y-x]||' ';console.log(s)

PPCGへようこそ!ご存知のとおり、コードを4つのスペースでフォーマットできます(私の編集を参照)。また、プログラムのバイト数を回答の先頭に入力します(例:)Javascript: 100 bytes
Qwerp-Derp

奇妙な構文エラーがあるようですが、それらを修正できますか?
Programmer5000

1

JavaScript(ES6)、170バイト 165バイト

コンソールで実行すると、戻り値が表示されるため、少し「だまされています」

v=0;("()()()()()()\n|9|:87654321".replace(/\d/g,(o)=>"\\"+(Math.PI+'2384626433832795028841971693').substr(v,o,v-=-o)+"|\n"+(o<9?" ".repeat(8-o)+(o>1?"\\::":"\\__\\|"):""))

ティーキングの後、関数は次のようになります(値0のパラメーターを指定して関数を呼び出す必要があります)。

v=>`()()()()()()
 |9 |:87654321\\__\\|`.replace(/\d/g,o=>`\\${(Math.PI+"2384626433832795028841971693").substr(v,o,v-=-o)}|
${" ".repeat(9-o)+(o<9&o>1?"\\::":"")}`)

関数を167バイト呼び出したい場合:

z=v=>`()()()()()()
 |9 |:87654321\\__\\|`.replace(/\d/g,o=>`\\${(Math.PI+"2384626433832795028841971693").substr(v,o,v-=-o)}|
${" ".repeat(9-o)+(o<9&o>1?"\\::":"")}`)


/*could be run like this or directly in the console*/
console.info("\n"+z(0));


1:追加の閉じ括弧が必要です。2:交換する"|\n"|<newline>どこ<newline>リテラルで改行です。3:y=>最初に追加すると、不正行為は行われません。4:サイトへようこそ!
Programmer5000

1
@ programmer5000ご意見ありがとうございます。最新の調整で使用しました。:-D
winner_joiner

パラメータを()囲む部分を削除して、2バイトを節約しvます。出力には、2行目と3行目の前に余分なスペースがあるようです。また、0引数として渡す必要はありません。関数は引数なしで正常に動作し、チャレンジによっても許可されません。
シャギー

はい、デフォルト値の前にありました。:-D
winner_joiner

0

PHP、142バイト

Sneaky-sneaky :) ペアphpが見つからない場合、PHPコードとして解釈しようとせずにすべてを出力します<?php ?>

()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.