Ausgabe mit der gleichen Anzahl von pi-Stellen wie die Länge des Codes


9

Ihre Herausforderung besteht darin, xZiffern von pi zu drucken, wo xIhre Codelänge ist.

Beispiele:

Source code (length) -> output
foo!        (4)         3.141
foobar      (6)         3.14159
kinda long  (10)        3.141592653
+++++       (5)         3.1415
123456789   (9)         3.14159265

Sie können damit die Anzahl der zu druckenden Ziffern bestimmen. Beachten Sie, dass der Dezimalpunkt nicht als Ziffer von pi zählt - daher sollte der Code der Länge 3 eine Ausgabe der Länge 4 haben.floor(π/10 * 10code_length) / 10code_length - 13.14

Regeln:

  • Ihre Codelänge muss größer als drei Zeichen sein.
  • Sie dürfen keine Standardlücken verwenden.
  • Sie können alle zulässigen Standardausgabemethoden verwenden.
  • Möglicherweise lesen Sie Ihre Quelle nicht, um die Codelänge zu bestimmen.
  • Sie dürfen keine eingebaute pi-Konstante verwenden.
  • Pi muss vollständig genau und nicht angenähert sein.
  • Der Dezimalpunkt in der Ausgabe ist erforderlich. Wenn Sie über den Rückgabewert ausgeben möchten, müssen Sie eine Gleitkomma-Ganzzahl zurückgeben.
  • Das Ziel dieser Herausforderung ist es, in jeder Sprache die kürzeste Lösung zu finden, nicht die kürzeste Sprache für die Lösung. Haben Sie keine Angst, eine Lösung in einer Sprache zu veröffentlichen, wenn eine kürzere Lösung in derselben Sprache veröffentlicht wird, solange Ihre Lösung eine andere Methode verwendet.

... so würde dies gültig ist oder nicht?
Jonathan Allan

(bearbeiten ^ diese gerade (Rundung))
Jonathan Allan

"Codelänge" ← in Bytes oder in Zeichen?
Lynn

@ Lynn Bytes, wie immer.
MD XF

Ist nur 3erlaubt?
NoOneIsHere

Antworten:


3

Japt , 9 4 Bytes

So kurz wie es nur geht :)

Enthält einen nicht druckbaren (umgekehrten Zeilenvorschub, Charcode 141) nach dem #.

3.#

Probier es aus

In Japt wird jedes folgende Zeichen #in seinen Zeichencode konvertiert und an alle Ziffern oder Dezimalstellen angehängt, die ihm vorangehen können, in diesem Fall das3.




6

VBA (Excel), 15 Bytes

MsgBox 4*Atn(1)

Ausgabe: 3.14159265358979

Ich denke, das ist nicht akzeptabel, da ich es nur auf die Länge des PI golfen habe. Die Länge ohne Golf beträgt 17 Bytes. D:


1
Sieht so aus, als wären Sie noch nicht begrüßt worden. Willkommen auf der Website!
MD XF

Oh, danke, Sir! : D
Remoel

Ist nicht Atnarktangent? Ich bin nicht sicher, ob dies erlaubt ist ... OP fragen
JungHwan Min

Ich dachte, OP bezieht sich nur auf eingebauten PI. Mein Fehler.
Remoel

5

Gelee , 6 Bytes

3;⁽4ƒṾ

Probieren Sie es online aus!

Druckt 3,14159mit dem zulässigen "europäischen" Dezimaltrennzeichen ,.

Wie?

3;⁽4ƒṾ - Main link: no arguments
3      - literal 3                3
  ⁽4ƒ  - base 250 literal 14159   14159
 ;     - concatenate              [3,14159]
     Ṿ - unevaluate               ['3', ',', '1', '4', '1', '5', '9']
       - implicit print           3,14159

1
Diese Ziffernliste sieht seltsam aus. Ich denke, da ist noch ein Extra ,'drin.
Jonathan Frech

1
Sie können tun -ÆAær5und verwenden, .anstatt ,, aber dann wäre es das gleiche wie meine Gelee-Lösung.
Zacharý



4

Desmos , 130 Bytes

f\left(\right)=\frac{\operatorname{floor}\left(10^{128}\cdot 4\sum_{k=1}^{9^9}\frac{\left(-1\right)^{k+1}}{2k-1}\right)}{10^{128}}

Der Quellcode dafür (auf den durch Kopieren und Einfügen innerhalb und außerhalb von Desmos zugegriffen werden kann) ist nicht optimal, wenn er mit dem Desmos-Editor generiert wird. Daher wurden nach Möglichkeit einige Bytes Leerzeichen entfernt.

Dies definiert eine Funktion, fdie keine Argumente akzeptiert und pi zurückgibt, berechnet mit der Gregory-Sequenz zu k=9^9 (Ich kann nicht bestätigen, dass dies genau genug ist, aber ich bin der Meinung, dass dies der Fall ist, es kann mit einem größeren Wert von k genauer gemacht werden ) Das Ergebnis wird dann auf 128Dezimalstellen begrenzt, die neben 3.der Länge des Quellcodes stehen.

Probieren Sie es online aus!


Wie sieht man eigentlich das Ergebnis - ich sehe nur 3.14159265617, schaue ich am falschen Ort; muss ich einen Knopf drücken?
Jonathan Allan

Desmos druckt standardmäßig nicht mit so vielen Dezimalstellen wie angegeben, aber der Wert sollte trotzdem genau sein.
ATaco

1
Das ist enttäuschend, da die Herausforderung darin besteht, "zu drucken ..."
Jonathan Allan

1
"Der Dezimalpunkt in der Ausgabe ist erforderlich. Wenn Sie über den Rückgabewert ausgeben möchten, müssen Sie eine Gleitkomma-Ganzzahl zurückgeben." was dies gültig macht.
ATaco

Ich bin der Meinung, dass die Absicht dieser Aussage nicht darin bestand, eine geringere Genauigkeit zuzulassen, sondern ein Dezimaltrennzeichen sicherzustellen. Wohlgemerkt, ich glaube nicht, dass deine Antwort schlecht ist.
Jonathan Allan





3

APL, 6 Bytes

10○⍟-1

Nimmt den Imaginärteil von ln (-1).

Probieren Sie es online aus!


Hey, willkommen zurück @Uriel! Schön, ich habe nicht an so etwas gedacht (mit Protokollen mit negativen Zahlen), gute Arbeit!
Zacharý

@ Zacharý danke, habe gerade einen Besuch abgesetzt und konnte nicht anders, als dies zu beantworten: P
Uriel

2

J , 16 Bytes

17j15":4*_3 o.1:

Probieren Sie es online aus!

Ähnlich wie bei der VBA-Antwort. Ausgänge : 3.141592653589793.


"Sie dürfen kein eingebautes Makro oder keine Konstante verwenden, um pi zu bestimmen." Witzig, es ist dein Kommentar
Leaky Nun

Ihre Ausgabe ist 17 Bytes, nicht 16.
ATaco

1
@ ATaco genau, es ist 16 Ziffern
ASCII-

@LeakyNun tut es nicht. _3 o.1berechnet atan (1). Wie Sie vielleicht gewusst haben, sind mir die Regeln bekannt.
Conor O'Brien

2

Math.JS , 17 Bytes.

     log(-1,e).im

Das sind 5 führende Felder

Dies berechnet auf 15 Dezimalstellen und druckt es implizit aus.

Probieren Sie es online aus!


Technisch gesehen berechnet dies den Imaginärteil von ln(-1), aber da es sich um eine rein imaginäre Zahl handelt, entspricht dies der Division durch i.
Zacharý

2

05AB1E , 11 Bytes

3•∊&SK•)'.ý

Probieren Sie es online aus!

COMMAND     # CURRENT STACK         | EXPLANATION
------------#-----------------------+-----------------------------------
3           # [3]                   | Push 3.
 •∊&SK•     # [3, 1415926535]       | Push compressed base-255 number 1415926535.
       )    # [[3,1415926535]]      | Wrap the 2 to an array.
        '.  # [[3,1415926535],'.']  | Push a decimal point.
          ý # ['3.1415926535']      | Join 3 and 1415926535 with a decimal point.

VERWENDUNG VON BUILT-INS:

05AB1E , 4 Bytes

žq5£

Probieren Sie es online aus!


3žs funktioniert aus irgendeinem Grund nicht ...


@ Zacharý habe ich etwas verpasst? Warum ist das spezielle xD?
Magic Octopus Urn

Es ist in meinem Benutzernamen und können Sie auch eine Erklärung hinzufügen?
Zacharý

@ Zacharý HA! Mein Gehirn durchlief alle möglichen lustigen PPCG-bezogenen Witze, die es sein könnte, und kam leer heraus. Ich überdenke Mist.
Magic Octopus Urn

@ Zacharý auch hinzugefügt.
Magic Octopus Urn

Wenn MY implizite IO hätte, gäbe es keine Möglichkeit zu schlagen E3., ich bin jetzt sauer auf mich selbst: p.
Zacharý

2

ForceLang , 269 Bytes

set S 0x5F258E476FC1B3B5571012206C637089460E41E814CB071E61431B5F0671F551D18D2C5D2D3A2565E408C6DE8D753F595B6E9979C3866D1C9965008DCFB02E3BD11D21DFFAF17978F05C8BBACF55A5ED5E90B1D8CAD8736AA4B728EB342B453F86353DB371D322B6A98613BC5CCB00AC2.mult 1e-270
io.write S.toString 268

Link zur Sprache auf Github zumindest.
Jonathan Allan

2

MATL , 9 8 Bytes

-1X;V9:)

Probieren Sie es online aus!

Erläuterung:

-1      % number literal
X;      % inverse cosine (radians), giving pi
V       % convert to string
9       % specify precision
:)      % keep first 9 characters - 8 digits of precision

Ein Byte dank Luis Mendo gespeichert!


1

Gelee , 6 Bytes

-ÆAær5

Probieren Sie es online aus!

Verwendet einen anderen Ansatz als die anderen Jelly-Antworten.

Wie?

-ÆAist der inverse Kosinus von -1(der pi ist), ær5ruft den benötigten Abschnitt ab. Es hat funktioniert, so dass Rundung in diesem Fall gleichbedeutend mit Abschneiden ist



1

Perl 5, 40 Bytes

}{$\=$\/~(2*$_)*~$_+2for-130..-2

Erfordert die Befehlszeilenoption -pMbignum, die als 8 gezählt wird.

Beispielnutzung:

$ perl -pMbignum test.pl < /dev/null
3.141592653589793238462643383279502884197

Ich entschuldige mich für keinen TIO-Link, er scheint nicht zu unterstützen bignum(oder eine unübertroffene Öffnungsklammer ...).


1

MEIN , 7 Bytes

’2ō"8↑↵

Probieren Sie es online aus!

Wie?

  • Dekrementieren Sie die Oberseite des Stapels ( 0wird geöffnet, wenn er leer ist, wodurch der Stapel erstellt wird [-1]). (Gleiches Symbol wie Gelee)
  • 2drücken 2.
  • ō, da die Oberseite des Stapels zwei ist, verwerfen Sie das 2Pop nund drücken Sie dann acos(n)(im Bogenmaß ergibt dies pi, dieses Symbol hat oein negatives Vorzeichen darüber o(für normalen Trigger) stammt von APL).
  • ", Pop das oberste Element des Stapels und schieben Sie es als String.
  • 8drücken 8.
  • , pop adann b, push b[:a](Dies ist ein weiteres Symbol aus APL).
  • , Ausgabe mit einer neuen Zeile (OUTPUT <- STACK).

Fügen Sie dann implizite Ausgabe hinzu: P
MD XF

Ich
halte

1

RPL (HP48), 86,5 Byte, 87 Stellen [Zählt das?]

« GROB 8 43
14159265358979323846264338327950288419716939937510582097494459230781640628620899862803
→STR 9 OVER SIZE SUB 2 "." REPL »

GROB ist ein Bildschlüsselwort. Die 2 folgenden Zahlen sind Breite und Höhe. Die folgenden hexadezimalen Ziffern sind Bitmaps. Das ist 1 Byte Speicherplatz pro 2 Ziffern plus die Bildmetadaten.

Das leere Programm « »benötigt 10 Bytes. Ein Befehl benötigt 2,5 Bytes. Ein Float benötigt 10,5 Bytes, aber wenn es einer einstelligen Ganzzahl entspricht, kann es 2,5 Bytes dauern.

HP48 speichert 4 statt 8 Bits an jedem Speicherort, sodass ein Byte 2 aufeinanderfolgende Speicherplätze belegt (Low Endian). Oft werden 20-Bit-Chunks verwendet, die 2,5 Byte (nicht 3) benötigen.





0

Excel VBA, 16 Bytes

Anonyme VBE-Sofortfensterfunktionen, die keine Eingabe und Ausgabe in die STDOUTs von Excel VBA übernehmen

Jede Zeile stellt eine separate Funktion dar, die Pi der Länge 16 zurückgibt

?Mid(4*Atn(1),1)
?Str([Acos(-1)])
Debug.?4*Atn(1);
MsgBox[Acos(-1)]
[A1]="=ACOS(-1)"



0

TI-BASIC, 7 Bytes

round(4tan⁻¹(1),6

round(2sin⁻¹(1),6

round(cos⁻¹(-1),6

Diese drei Anweisungen werden gedruckt 3.141593.


Hinweis: TI-BASIC ist eine Token-Sprache. Die Anzahl der Zeichen entspricht nicht der Anzahl der Bytes.

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.