Obbiettivo
Genera ( N) segmenti di linea casuali di lunghezza uniforme ( l), controlla se attraversano le tlinee parallele equidistanti ( ).
Simulazione
Cosa stiamo simulando? Ago di Buffon . Leviga la sabbia nella tua sandbox, disegna una serie di linee parallele equidistanti (chiama la distanza in mezzo t). Prendi un bastoncino dritto di lunghezza le lascialo cadere Nnella sandbox. Lascia che sia il numero di volte che ha attraversato una linea c. Allora Pi = (2 * l * n) / (t * c)!
Come stiamo simulando questo?
- Prendi input
N,t,l - Con
N, t, ltutti i numeri interi positivi - Fai i seguenti
Norari:- Genera una coordinata intera uniformemente casuale
x,y - Con
1 <= x, y <= 10^6 x,yè il centro di un segmento di linea di lunghezzal- Genera un numero intero uniformemente casuale
a - Con
1 <= a <= 180 - Lascia che
Psia il punto in cui il segmento di linea attraverserebbe l'asse x - Quindi
aè l'angolo(x,y), P, (inf,0)
- Genera una coordinata intera uniformemente casuale
- Contare il numero
cdi segmenti di linea che attraversano la lineax = i*tper qualsiasi numero interoi - Ritorno
(2 * l * N) / (t * c)
specificazione
- Ingresso
- Flessibile, accetta input in uno dei modi standard (es. Parametro di funzione, STDIN) e in qualsiasi formato standard (es. String, Binary)
- Produzione
- Flessibile, fornisce output in uno dei modi standard (ad es. Ritorno, stampa)
- Sono ammessi spazi bianchi, finali e spazi bianchi iniziali
- Precisione, si prega di fornire almeno 4 cifre decimali di precisione (es.
3.1416)
- punteggio
- Vince il codice più corto!
Casi test
L'output potrebbe non allinearsi con questi, a causa di possibilità casuali. Ma in media, dovresti ottenere tanta precisione per il valore dato di 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
Queste sfide sono simulazioni di algoritmi che richiedono solo la natura e il cervello (e forse alcune risorse riutilizzabili) per approssimare Pi. Se hai davvero bisogno di Pi durante l'apocalisse di zombi, questi metodi non sprecano munizioni ! Ci sono nove sfide in totale.
aessere creata anche con un altro metodo, se è uniforme? (pensando a una bolla Gauss 2D)
t > l? Due soluzioni di seguito fanno questo presupposto, che semplifica un po 'il controllo dell'intersezione.

