Eine Darstellung einer Dezimalstelle mit doppelter Genauigkeit kann nur eine Genauigkeit von 15 Dezimalstellen garantieren, daher wird pi angenähert als:
3.141592653589793
Sie können sehen, dass sich die Ziffer 3
an Positionen befindet 1, 10, 16
, die Ziffer 1
sich an Positionen befindet 2, 4
usw.
Herausforderung
Ihre Aufgabe ist es, ein Programm oder eine Funktion zu erstellen, die eine zufällige doppelte Zahl zwischen 0 und 1 erzeugt und die Werte dieser Zahl auf den Wert von pi abbildet. Sie tun dies, indem Sie die verschiedenen Ziffern in den Zufallszahlen an die Stelle setzen, die diese Ziffer in pi hat. Wenn die Ziffer in pi nicht gefunden wird, überspringen Sie sie und jede Ziffer in pi, die nicht in der Zufallszahl enthalten ist, wird durch ein dargestellt x
. Jeder Wert kann nur einmal verwendet werden, beginnend von links.
Einige Beispiele werden dies wahrscheinlich klarer machen. In den folgenden Beispielen ist die erste Zahl pi, die zweite ist die Zufallszahl und die letzte ist die gewünschte Ausgabe.
3.141592653589793
0.111111111111111
x.1x1xxxxxxxxxxxx
3.141592653589793
0.531000000000000
3.1xx5xxxxxxxxxxx
3.141592653589793
0.123456789123456
3.141592653x8x7xx
3.141592653589793
0.967552381459391
3.14159265358979x
Regeln:
- Die Funktion sollte keine Eingaben annehmen (eine mögliche Ausnahme wird in Aufzählungspunkt 3 erläutert)
- Die Ausgabe darf nur aus der Ausgabezeichenfolge mit optionalem Zeilenumbruch bestehen (ein einzelnes Leerzeichen wird ebenfalls akzeptiert).
- Wenn Ihr Programm keinen integrierten Pi-Wert und / oder RNG hat, können Sie Pi fest codieren und die Zufallszahl als Eingabe verwenden. Sie können die Zufallszahl nicht fest codieren oder Pi als Eingabe verwenden.
- Sowohl der fest codierte Wert für Pi als auch die 15 zufälligen Ziffern (Sie können überspringen,
0.
da Sie wissen, dass er zwischen 0 und 1 liegt) werden in die Byteanzahl einbezogen. - Wenn Ihre Sprache nicht die erforderliche Genauigkeit aufweist, können Sie unter den folgenden Einschränkungen eine geringere Genauigkeit verwenden
- Die Ziffern von Pi müssen bis zu Ihrer Genauigkeit genau sein
- Sie können nicht mehr Werte ausgeben, als Sie garantiert korrekt haben, dh Sie können keine 15 Stellen ausgeben, wenn die Genauigkeit nur 8 genaue Dezimalstellen zulässt.
- Der fest codierte Wert von Pi wird als 16 Byte gezählt (Sie benötigen keinen Dezimalpunkt), auch wenn Ihr Programm nur 8 Ziffern unterstützt.
- Der Eingabewert für die Zufallszahl wird mit 15 Bytes angegeben (das brauchen Sie nicht
0.
. Dies liegt daran, dass Sprachen mit geringer Genauigkeit keinen unfairen Vorteil haben sollten. - Das Programm muss (mindestens) eine Genauigkeit von 5 Dezimalstellen unterstützen.
- Bearbeiten: Um die Antwort zu validieren: Die Zufallszahl sollte irgendwie gedruckt werden, aber diese Operation muss nicht in die Byteanzahl einbezogen werden. Wenn es beispielsweise möglich ist, ein
print r
am Ende des Skripts einzufügen , erhöht dieser Teil die Punktzahl nicht. - Sie können die Bytes nicht subtrahieren, wenn sie Teil einer anderen erforderlichen Operation sind. Dh wenn der Code ist
print pi, r
, dann kann man nur subtrahieren, r
. - Wenn Sie mehrere Orte Teile im Code einfügen müssen, geben Sie bitte beide Versionen (die, das druckt die Zufallszahl und die, die mit einem Kommentar nicht wie:
_p
und_oNo
. Sind die Zufallszahl drucken benötigt_p
tut xxx und_oNo
tut yyy._p
und_oNo
wird nicht in die Byteanzahl einbezogen.
Kürzester Code in Bytes gewinnen.
Bestenliste
Das Stapel-Snippet am Ende dieses Beitrags generiert den Katalog aus den Antworten a) als Liste der kürzesten Lösungen pro Sprache und b) als Gesamt-Bestenliste.
Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
## Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder wenn Sie die Strafen für Interpreter-Flags separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:
## Perl, 43 + 2 (-p flag) = 45 bytes
Sie können den Namen der Sprache auch als Link festlegen, der dann im Snippet angezeigt wird:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
0 < random < 1
oder 0 <= random <= 1
?