Inspiriert von Bake a Slice of Pi
Herausforderung
Bei Eingabe von 3 <= n <= 100
und 3 <= y <= n
wird eine n x n
Matrix aus dem Dezimalteil von pi
( 14159...
) erstellt, beginnend oben links. Nehmen Sie dann das obere rechte Dreieck der Größe y x y
und verknüpfen Sie es miteinander. Geben Sie die resultierende Nummer aus.
Beispielsweise für die Eingabe n = 5
, y = 3
wird die folgende Matrix konstruiert
14159
26535
89793
23846
26433
Dann wäre das obere rechte 3 x 3
Dreieck
159
35
3
so 159353
ist die Ausgabe.
Eingang
Zwei Ganzzahlen - n
die die Größe der quadratischen Matrix der Ziffern von pi und y
das obere rechte Dreieck darstellen - in einem beliebigen geeigneten Format .
Ausgabe
- Die resultierende aufgeschnittene und verkettete Nummer, die entweder gedruckt oder auf dem Bildschirm angezeigt wird, als Zeichenfolge usw. zurückgegeben wird.
- Das nachgestellte / führende Leerzeichen ist optional, solange in der Ausgabe kein Leerzeichen enthalten ist (dh,
159 35 3
wenn es sich um ein ungültiges Leerzeichen handelt ). - Beachten Sie, dass
pi
Antworten die letzte Ziffer der Matrix nicht runden sollten , da explizit nach den Ziffern und nicht nach einer Annäherung oder mathematischen Berechnung gesucht wird.
Regeln
- Dies ist Code-Golf, so dass alle üblichen Regeln für das Golfen gelten und der kürzeste Code (in Bytes) gewinnt.
- Ein vollständiges Programm oder eine vollständige Funktion sind akzeptabel.
- Standardlücken sind verboten.
Beispiele
n y output
-------------
3 3 141923
5 3 159353
6 4 1592589383
6 6 141592535893238643794
20 12 358979323846950288419715820974944628620899211706792306647223172745025559196615
Antworten:
05AB1E , 19 Bytes
Verwendet CP-1252- Codierung.
Probieren Sie es online!
Erläuterung
n=5, y=3
zum Beispiel verwendetquelle
Python 2 (mit Sympy), 100 Bytes
Kein sympy,
260 246 244 233 231218 BytesHierfür wird "The Spigot Algorithm For Pi" von Stanley Rabinowitz und Stan Wagon verwendet.
Das Standardargument wäre
a,b,c,d,e,f=0,1,1,1,3,3
, die erste Ziffer von pi zu liefern3
, da dies nicht erforderlich ist. Der Algorithmus wird bis zu dem Punkt initialisiert, an dem er1
ausgegeben wurde. Dies spart zwar zwei Bytesa
undb
ist länger, da das Ergebnis kein Slicing und benötigti
bei beginnen kann0
eher als-1
.Erreicht das Standard-Rekursionslimit für den letzten Testfall.
Wird
//
für die erste der Unterteilungen verwendet, sodassstr(v)
es durch ersetzt werden kann`v`
(andernfalls würde esL
lange dauern ).repl.it
Eine nicht rekursive Version für 232 Bytes, die auch den letzten Testfall auswertet:
repl.it (erster Einzug ist ein Leerzeichen, zweiter Einzug ist ein Tabulator)
quelle
Mathematica, 82 Bytes
quelle
#&@@
anstelle von verwenden[[1]]
.1415926535979323846433832798841971937510749448164899259
; die letzte9
ist die 100. Stelle von pi und die 101. Stelle ist8
- keine Rundung)MATL,
232227 Bytes1 Byte gespart dank @Luis
Probieren Sie es online
Erläuterung
quelle
Perl, 67 Bytes
Erfordert die Befehlszeilenoption
-nMbignum=bpi
, die als 12 gezählt wird. Die Eingabe erfolgt über stdin.Beispielnutzung
quelle
C #,
232 Bytes268 BytesBearbeiten:
Ich habe ursprünglich eine konstante Zeichenfolge für Pi außerhalb der Methode verwendet, aber es scheint, dass dies ein Betrug war. Ich musste den C # Math.PI-Wert verwenden, der nur 14 Dezimalstellen hat, also die höchste
m
Wert, den ich verwenden kann, 3 ist. Zurück zum Zeichenbrett ...Golf gespielt:
Ungolfed:
Nicht die kürzeste Antwort, aber ich war froh, dass ich diese gelöst habe ...
Testausgang:
5 3 1593536 4 15925893836 6 14159253589323864379420 12 358979323846950288419715820974944628620899211706792306647223172745025559196615quelle
p
, die nicht in die Sprache integriert ist (was ich ziemlich sicher nicht bin), müssen Sie diese leider in Ihren Bytewert aufnehmen.