Backe ein Stück Pi


82

Schreiben Sie ein Programm oder eine Funktion, die genau diesen Text ausgibt (bestehend aus 142 Zeichen):

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

Ihr Programm darf keine Eingaben (außer in Sprachen, in denen dies nicht möglich ist, wie z. B. sed) und den obigen Text (und nur den obigen Text) als Ausgabe erzeugen. Ein abschließender Zeilenumbruch ist zulässig.

Das ist , also gewinnt die kürzeste Antwort (in Bytes).


9
@RohanJhunjhunwala Als Beweis dafür, dass dies komprimiert werden kann, hat Luis Mendo es getan .
Erik der Outgolfer

1
Lol, ich habe mich als sehr beeindruckend erwiesen (und ich bin froh darüber!)
Rohan Jhunjhunwala

2
Sie haben kalt gemacht, dass sie eine Ganzzahleingabe N nehmen, um ein Slice auszugeben, dessen Nummer ()an der Spitze N ist. Es wäre sehr komplex, wenn.
user6245072

5
Damit Sie wissen, benötigen Sie 43 Nachkommastellen von π.
Erik der Outgolfer

4
So nah am Sinn des Lebens ....
A. Mirabeau

Antworten:


90

MATL , 70 68 67 Bytes

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

Probieren Sie es online!

Erläuterung

Was für ein Chaos. Aber hey, da ist eine Faltung!

Die Erklärung wird klarer, wenn Sie den Stapelinhalt nach einer bestimmten Anweisung überprüfen können . Fügen Sie dazu einfach X#0$%an dieser Stelle ein. (Das bedeutet: X# Stack-Inhalte 0$anzeigen, nichts anderes implizit anzeigen %, Rest des Codes auskommentieren). Sehen Sie sich zum Beispiel den Stapel direkt nach der Faltung an .

'()'       % 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
Luis Mendo, das ist beeindruckend. Ich würde zweimal stimmen, wenn ich könnte. Ich dachte, das wäre eine inkompressible Herausforderung für Kolmogorov. Danke, dass du mir das Gegenteil bewiesen hast!
Rohan Jhunjhunwala

3
@ Rohan Danke für deine freundlichen Worte!
Luis Mendo

1
: D Kein Problem! : D
Rohan Jhunjhunwala

3
+1 für die :), die in Ihrem Code angezeigt wird.
Erik der Outgolfer

2
@ Neil Sehen Sie die Sonnenseite des Lebens ...
Erik the Outgolfer

37

Perl, 93 Bytes

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

Erfordert die Befehlszeilenoption -l71Mbignum=bpi, die als 14 gezählt wird. Die \32sollte durch ein Literalzeichen 26 ersetzt werden.

Beispielnutzung

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

Perl, 111 Bytes

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

Parametrisierte Version. Erfordert die Befehlszeilenoption -nMbignum=bpi, die als 12 gezählt wird.

Beispielnutzung

$ 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 Bytes

Dies ist 1 Byte kürzer als nur die Anzeige des Klartextes.

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
Ist es nicht ein Byte kürzer als console.log ("") + 12 * 11 Zeichen + 18 Backslashes + 10 Zeilenumbrüche?
Titus

@ Titus - Du hast recht. Ich habe vergessen zu zählen, dass ein Backslash entgangen ist. Vielen Dank!
Arnauld

18
Mild interessant, aber 2384626433832795028841971693 ist zufällig die Primzahl.
ElementW

1
@ElementW - Komisch, dass du es erwähnt hast, weil ich das auch überprüft habe. :)
Arnauld

Würde das Schreiben der Zahl als Hexadezimalzahl und das Konvertieren in eine Zeichenfolge Byte sparen?
Nic Hartley

17

Python 2, 131 Bytes

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

Gemeinsame Anstrengung von Sp3000 und Lynn. Kupfer hat auch ein Byte gespart! Ideone-Link.


Das ist elegant +1
ElPedro

Sie sollten 1 Byte speichern können, indem Sie die Klammern in der forSchleife entfernen .
Kupfer

16

/// , 129 127 Byte

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

Probieren Sie es online!


-2 Bytes , wenn Sie tun , /!/()()/!!!statt ()()()()()()und ersetzen /#/|\n%%/mit /#/|\n%/und den Rest des Codes anpassen , um es mit dem arbeiten.
Acrolith

@daHugLenny Oh danke, ich wusste nicht, dass 4 * 3 ein gültiger Ersatzkandidat ist. Für Ihren zweiten Vorschlag denke ich, dass es länger sein wird.
Erik der Outgolfer

@daHugLenny ^^ Ich kann bestätigen, dass dein zweiter Vorschlag in der Tat länger ist.
Erik der Outgolfer


@DestructibleWatermelon Ich habe es absichtlich gemacht. Es gibt auch andere Gesichter: -:, :-, :-und -__-.
Erik der Outgolfer

12

Bash, 153 Bytes

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

9
Wenn man bedenkt, wie viele der anderen Antworten länger in die Falle gingen, als den wörtlichen Kuchen zu drucken , denke ich, dass dies in der Tat eine kluge Antwort ist. Außerdem sind es nach meiner Zählung nur 153 Bytes.
Lynn

3
@Lynn Es wird jedoch nur das Beispiel auf die Ausgabe kopiert, ohne dass versucht wird, Golf zu spielen, und daher wird davon abgeraten. Zumindest die anderen Antworten haben sich Mühe gegeben ...
Beta Decay

Sie können die Leerzeichen vor und nach dem entfernen <<. Und Ihr Bytecount besteht aus 153 Bytes.
TuxCrafting

1
Sind echo '()()()()()()...\__\|'4 Bytes nicht kürzer?
Neil

@Lynn Ich bin froh, dass ich dieses Problem nicht hatte. Batch benötigt 100 Bytes Overhead, um den Kuchen einfach zu drucken.
Neil

9

Batch, 195 Bytes

@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èd , 135 129 Bytes (nicht konkurrierend)

(Der Interpreter ist nicht wirklich leicht buggèd (mehr:]) , aber es hat keinen Einfluss auf dieses Programm )

Durch Umstrukturierung und Umschreiben meines Programms habe ich sechs Bytes Golf gespielt

Und jetzt muss ich eine neue Erklärung abgeben ...

Trotzdem könnten kürzere Probs sein


Zumindest ist die beste Lösung in dieser Sprache nicht nur das Schreiben in die Rohdaten ¯ \ _ (ツ) _ / ¯


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

Probieren Sie es online aus

Erläuterung

Ehrlich gesagt beschreibt dies das eigentliche Programm nicht sehr gut, gibt aber Hinweise zu den Befehlen, so dass Sie vielleicht ein wenig besser verstehen

#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

KOMPLEXE SACHE: NESTED LOOPS

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

Solange die aktuelle Zelle kein Leerzeichen ist {nach links bewegen, Schleife ausführen: (Solange die Zelle nicht | ist, aktuelles Zeichen der Zeichenfolgenvariablen schreiben (daran denken, dass pi?), Zeichenfolgenzeiger inkrementieren, nach links bewegen), Schleife ausführen: (während die Zelle nicht \, nach oben bewegen, nach links bewegen


Warum nicht konkurrieren?
programmer5000

Nicht konkurrieren heißt, es ist neuer als die Herausforderung
Destructible Lemon

5

Fourier, 196 190 Bytes

Neuer Feature Alert!

Code

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

Erläuterung

Dieses Programm ist meine erste Demonstration von Funktionen in Fourier:

Funktionen sind wie folgt definiert:

|code goes here|f

Die erste Pipe startet die Funktionsdeklaration. Dann setzen Sie den Code zwischen die Pipes. Die letzte Pipe beendet die Funktionsdeklaration. Schließlich ist das fdie Variable, in der die Funktion gespeichert ist. Dies kann ein beliebiges Zeichen sein, sofern es sich nicht um eine reservierte Funktion handelt.

In meinem Code ist beispielsweise eine der folgenden Funktionen:

|SaCaaSa|f

Wobei die Variable Sdie Nummer 92 und Cdie Nummer 58 speichert.

Beim Aufruf gibt die Funktion Folgendes aus:

\::\

Da ist es die am meisten wiederholte Sache in der Torte.

In ähnlicher Weise habe ich eine Schleife verwendet, um die Ausgabe herunterzuspielen:

6(40a41ai^~i)

Womit der Code 40a41a6 Mal wiederholt wird . 40a41aauf seinen eigenen Ausgängen:

()

Wiederholen Sie den Code also sechs Mal, um Folgendes auszugeben:

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

Dadurch wird die Kruste des Kuchens ausgegeben.

Probieren Sie es auf FourIDE!

Da ich im Python-Interpreter keine Funktionen implementiert habe, funktioniert dieses Programm auf http://tryitonline.net nicht


4

Pyth, 89 Bytes

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

Probieren Sie es online!

Ersetzen Sie \xx(hexadezimal) durch das entsprechende ASCII-Zeichen, wenn Sie den Code aus dieser Antwort kopieren / einfügen. Es enthält nicht druckbare Zeichen in der gepackten Zeichenfolge, die SE herausfiltert.

Erläuterung

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

Jelly , 83 Bytes

sicherlich noch ganz golfabale

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

TryItOnline

Wie?

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
Wow, das ist das längste Jelly-Programm, das ich je gesehen habe: o
Beta Decay

@ BetaDecay kein Zweifel, es kann in 11 Bytes getan werden ...
Jonathan Allan

3

Python 2, 193 176 Bytes

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+"\__\|"

Oder eine kürzere, langweiligere Antwort:

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

3
Ist dir bewusst, dass print r'''(the pie)'''38 Bytes kürzer sind? :)
Lynn

+1 für Ihren zweiten Versuch, aber die Verwendung von einfachen Anführungszeichen macht es kürzer zu betrachten.
Pixelanzahl

3

C # 220 213 209 208 202 201 (171 *) Bytes

* Ich finde das unoriginal und betrügt

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

201 Bytes:

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 Bytes:

Ich bin mir sicher, dass es hier etwas zu golfen gibt

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+@"\__\|");}

Danke für die Antwort! Sie können mindestens ein Byte speichern, indem Sie den zusätzlichen Speicherplatz in entfernen .Substring(j, i).
Kupfer

Das war ein Versehen durch die automatische Formatierung in VS, aber ich habe trotzdem einiges anders gespeichert =)
pinkfloydx33

Eine anonyme Funktion, die die Torte wörtlich zurückgibt, ist> 25% kürzer: ()=>@"(pie)"beträgt 149 Bytes .
Lynn

Es ist auch langweilig und fühlt sich an wie Betrug. Regeln sagen zu drucken, nicht zurückzukehren
pinkfloydx33

@ pinkfloydx33 Drucken und Zurücksenden sind laut Community-Konsens standardmäßig zulässig .
mbomb007

3

PowerShell , 105 Byte

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

Probieren Sie es online!

Ich bin nicht sicher, wie ich diese Herausforderung nie beantwortet habe ... Ich habe sie und einige der anderen Antworten positiv bewertet. Na ja, besser spät als nie?

Dadurch werden sechs ausgeglichene Parens als Zeichenfolge in die Pipeline eingefügt und anschließend eine Literalzeichenfolge (die zwei Bytes speichert) für die nächsten beiden Zeilen. Dann durchlaufen wir den Rest der Zahlen, wobei jede Iteration die Anzahl der vorangestellten Leerzeichen ( $i) erhöht, mit denen verkettet wird \::<number>|. Zuletzt erstellen wir einen String mit der Spitze des Kuchens. Diese Zeichenfolgen Write-Outputverbleiben alle in der Pipeline, und ein impliziter Befehl setzt eine neue Zeile dazwischen.

Das sind 39 Bytes weniger als nur das Drucken der Torte.


3

Kohle , 31 Bytes

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

Probieren Sie es online!

Sie fragen sich vielleicht: Was ist diese Zauberei? Wie können Sie mit füllen UGPi? Nun, Charcoal beginnt, Unterstützung für Wolfram Language zu erhalten, in der Hoffnung, dass es eines Tages bei mehr Herausforderungen wettbewerbsfähig sein kann!

Vorher 71 Bytes

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

Probieren Sie es online!

Ausführlich

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

Beachten Sie, dass dies anders ist, da der Deverbosifier Strings automatisch komprimiert und redundante Befehle nicht entfernt.

Mit komprimierten Zeichenfolgen, 52 Bytes

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

xxd Ausgabe

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

Probieren Sie es online!


2

PHP, 170 Bytes

keine willkürliche Präzision Pi in PHP? Das Berechnen nimmt viel mehr Platz in Anspruch als das Kopieren und Einfügen. Es spielt keine Rolle, dass die letzte Ziffer hier abgeschnitten und nicht gerundet ist. aber in 64-Bit-Pi wird die letzte Ziffer aufgerundet.

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

Laufen Sie mit php -r '<code>'

unkommentierte Panne

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

In der Ausgabe fehlt 1 Leerzeichen (was Sie beheben können, indem Sie das 13mit einem ändern 14). Und aus irgendeinem bizarren Grund fehlt Ihnen die schließende Klammer oben. Durch die Änderung wird die Ausgabe korrigiert.
Ismael Miguel

PHP-Antworten benötigen ein <?phpTag, sonst erzeugen sie nur eine konstante Ausgabe. PHP Hallo, Welt! hängt eigentlich davon ab. Wenn man jedoch von einer konstanten Ausgabe spricht, würde eine PHP-Antwort, die nur den wörtlichen Kuchen und überhaupt kein <?phpTag enthält, Ihre um ein Vielfaches übertreffen…
Lynn,

@Lynn: PHP benötigt das <?phpTag nicht, wenn Sie es mit ausführen -r.
Titus

2

Python 2, 183 171 Bytes

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+"\\__\\|"

Macht eigentlich nichts gescheites. Baut einfach einen großen String auf und druckt ihn dann aus.

BEARBEITEN

Reduziert auf 171 nach dem Lesen von @Lynns Antwort und Lernen. Tut mir leid, wenn es falsch ist, (schamlos) ein paar Bytes von dir zu stehlen, ohne dass du es vorschlägst. Bitte sagen Sie mir, wenn ja, und ich werde die Änderung zurücksetzen.

Ausgabe

python pi.pie.py

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

Ist dir bewusst, dass print r'''(the pie)'''28 Bytes kürzer sind? :)
Lynn

@Lynn Betrügt das nicht? ;-)
ElPedro

Es ist kein Betrug, nur nicht sehr interessant (und wir brauchen diese Antwort nicht für jede Sprache, IMO. Die bash Antwort ist ausreichend). Mehr wie etwas, das Sie erwähnen möchten, wenn Sie eine Antwort wie diese posten, um anzuerkennen, dass Ihr Golfversuch ein Verlust war. Vielleicht lohnt es sich immer noch, etwas zu posten, falls jemand anderes einen Weg findet, Ihre Golfidee aufzugreifen und sie zu verbessern, vielleicht den naiven Ansatz zu übertreffen.
Peter Cordes

Ich nehme Ihre Kommentare an Bord von @Peter. Ich habe nicht versucht, respektlos zu sein, daher der Smiley. Jeder kann eine solche ASCII-Kunstherausforderung einfach ausdrucken. Ich bin ziemlich neu in diesem Bereich und bin hier, um zu lernen. Wenn es etwas bedeutet, habe ich einen Kommentar und eine +1 zu Lynns Antwort abgegeben, als ich sah, dass es sich nicht nur um eine gedruckte Aussage handelte, sondern das Problem auf eine Weise ansprach, die meine Bemühungen in keiner Weise übertraf. Ich habe gelernt ...
ElPedro

Solange Ihre Antwort einen anderen Ansatz hat, ist es in Ordnung, Ideen aus anderen Antworten zu erhalten (in derselben Sprache oder nicht). Das Einzige, was nicht in Ordnung wäre, wäre, wenn Ihre Antwort genau den gleichen Code wie die von Lynn enthält. In der Regel schlagen Sie dies in einem Kommentar vor, wenn sich die Antwort einer anderen Person geringfügig verbessert. Wenn Sie jedoch nach der Antwort einer anderen Person mehrere neue Ideen haben, können Sie Ihre verbesserte Version sogar als neue Antwort veröffentlichen. Ich bin mir über die Etikette nicht ganz sicher, aber ich denke, es ist in Ordnung, solange Ihre Antwort deutlich anders ist.
Peter Cordes

2

Ruby, 140 138 137 Bytes

Meine Lösung für dieses Problem in Ruby, das ist meine erste Code Golf Antwort: 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)}

Lesbare Version und Erklärung:

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

Nichts wirklich Schlaues, nur ein paar einfache Loops :)

Ausgabe:

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

2
Willkommen bei PPCG! Schöner erster Beitrag!
21.

2

Stax , 63 Bytes

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

Online ausführen und debuggen!

Kürzer als die akzeptierte MATL-Antwort. Es wäre definitiv kürzer, wenn mehr Ziffern als der konstante pi in Stax gespeichert würden.

(Was ist das Pi<0im Code?)

Erläuterung

Verwendet das ASCII-Äquivalent, um zu erklären, was ist

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

Erweiterung:

.()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 Bytes

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

. Seufz, einfach die Ausgabe der Kuchen ist kürzer, auch mit allen entkam Schrägstrichen ..>>
Hier ist vorherige Antwort mit einem klein wenig leisten, wenn auch noch nicht sehr allgemein oder Phantasie ( 236 Byte ):

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)+"\\__\\|";}

Eine ziemlich langweilige Antwort, da die einfache Ausgabe des Ergebnisses ohne allzu ausgefallene Dinge in Java kürzer ist als ein generischer Ansatz.

Ungolfed & Testcode:

Probieren Sie es hier aus.

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

Ausgabe:

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

1

Qbasic, 175 Bytes

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

1

Lua, 152 Bytes

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

Versuchen Sie, wie ich könnte, ich konnte diese Pi nicht komprimieren.

Lua ist einfach zu wortreich, vielleicht ein Pi von größerer Größe, aber nicht dieser.

Eine andere Lösung, 186 Bytes.

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..'       \\__\\|')

Es ist ärgerlich, dass Luas Pi nicht genau genug ist, um das Pi zu füllen. :(


1

Javascript, 172 Bytes

Fügen Sie es in Ihre Konsole ein, um es auszuführen.

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)

Willkommen bei PPCG! Damit Sie wissen, können Sie Ihren Code mit vier Leerzeichen formatieren (siehe meine Bearbeitung). Fügen Sie außerdem die Anzahl der Bytes in Ihrem Programm oben in Ihre Antwort ein (z Javascript: 100 bytes. B. ).
Qwerp-Derp

Scheint seltsame Syntaxfehler zu haben, können Sie diese beheben?
programmer5000

1

JavaScript (ES6), 170 Byte, 165 Byte

ist ein bisschen "betrogen", da bei Ausführung auf der Konsole der Rückgabewert angezeigt würde

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?"\\::":"\\__\\|"):""))

Nach einigem Teak sieht die Funktion so aus (Funktion muss mit Parameter mit dem Wert 0 aufgerufen werden):

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

Wenn Sie die Funktion 167 Bytes aufrufen wollen:

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: Benötigt zusätzliche Abschlussklammer. 2: Ersetze "|\n"mit |<newline>wo <newline>ist ein wörtlicher Zeilenumbruch. 3: Füge y=>zum Anfang hinzu und es wird nicht schummeln. 4: Willkommen auf der Seite!
programmer5000

1
@ programmer5000 danke für deine Eingabe, ich habe es bei meinem letzten Tweak verwendet. :-D
winner_joiner

Sparen Sie 2 Bytes, indem Sie das ()Umschließen des vParameters entfernen . Ihre Ausgabe scheint ein zusätzliches Leerzeichen vor der 2. und 3. Zeile zu haben. Außerdem müssen Sie kein 0Argument übergeben, da Ihre Funktion ohne dieses Argument einwandfrei funktioniert und die Herausforderung dies auch nicht zulässt.
Shaggy

ja danke, ich hatte vorher voreingestellten wert. :-D
winner_joiner

0

PHP, 142 Bytes

Sneaky-sneaky :) phpdruckt einfach alles aus, ohne zu versuchen, es als PHP-Code zu interpretieren, wenn es keine <?php ?>Paare sieht .

()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.