Tor
Generieren Sie ( N
) zufällige Liniensegmente mit einheitlicher Länge ( l
) und prüfen Sie, ob sie die äquidistanten ( t
) parallelen Linien kreuzen .
Simulation
Was simulieren wir? Buffons Nadel . Glätten Sie den Sand in Ihrem Sandkasten und zeichnen Sie einen Satz gleichmäßig verteilter paralleler Linien (nennen Sie den Abstand dazwischen t
). Nehmen Sie einen geraden Stock der Länge l
und lassen Sie ihn N
mal in den Sandkasten fallen. Lassen Sie die Häufigkeit sein, mit der eine Linie überschritten wurde c
. Dann Pi = (2 * l * n) / (t * c)
!
Wie simulieren wir das?
- Nehmen Sie Eingabe
N,t,l
- Mit
N, t, l
allen positiven ganzen Zahlen - Gehen Sie wie folgt vor
N
:- Generieren Sie eine gleichmäßig zufällige Ganzzahlkoordinate
x,y
- Mit
1 <= x, y <= 10^6
x,y
ist der Mittelpunkt eines Liniensegments der Längel
- Generieren Sie eine einheitlich zufällige Ganzzahl
a
- Mit
1 <= a <= 180
- Sei
P
der Punkt, an dem das Liniensegment die x-Achse kreuzen würde - Dann
a
ist der Winkel(x,y), P, (inf,0)
- Generieren Sie eine gleichmäßig zufällige Ganzzahlkoordinate
- Zählen Sie die Anzahl
c
der Liniensegmente, die die Liniex = i*t
für eine beliebige Ganzzahl kreuzeni
- Rückkehr
(2 * l * N) / (t * c)
Spezifikation
- Eingang
- Flexibel, Eingabe auf eine der Standardmethoden (z. B. Funktionsparameter, STDIN) und in einem beliebigen Standardformat (z. B. String, Binär)
- Ausgabe
- Flexibel, Ausgabe auf eine der Standardmethoden (z. B. Rückgabe, Druck)
- Leerzeichen, nachgestellte und führende Leerzeichen sind akzeptabel
- Genauigkeit, bitte geben Sie mindestens 4 Dezimalstellen Genauigkeit an (dh
3.1416
)
- Wertung
- Der kürzeste Code gewinnt!
Testfälle
Ihre Ausgabe stimmt möglicherweise aufgrund zufälliger Zufälle nicht mit diesen überein. Aber im Durchschnitt sollten Sie ungefähr so viel Genauigkeit für den gegebenen Wert von erhalten N, t, l
.
Input (N,t,l) -> Output
----------- ------
10,10,5 -> ?.????
10,100,50 -> ?.????
1000,1000,600 -> 3.????
10000,1000,700 -> 3.1???
100000,1000,700 -> 3.14??
TL; DR
Diese Herausforderungen sind Simulationen von Algorithmen, die nur die Natur und Ihr Gehirn (und möglicherweise einige wiederverwendbare Ressourcen) benötigen, um Pi zu approximieren. Wenn Sie Pi während der Zombie-Apokalypse wirklich brauchen, verschwenden diese Methoden keine Munition ! Insgesamt gibt es neun Herausforderungen .
a
auch mit einer anderen Methode erstellt werden, wenn sie einheitlich ist? (Denken an eine 2D-Gauß-Blase)
t > l
? Zwei der folgenden Lösungen gehen von dieser Annahme aus, die die Überprüfung auf Schnittpunkte erheblich vereinfacht.