Hedef
N
Düzgün uzunlukta ( ) rastgele çizgi segmentleri üretin ( ) l
, eşit mesafede ( t
) paralel çizgileri geçip geçmediklerini kontrol edin .
Simülasyon
Neyi simüle ediyoruz? Buffon'un iğnesi . Kum havuzunuzdaki kumları düzeltin, eşit aralıklı paralel çizgiler çizin (aradaki mesafeyi çağırın t
). Uzun bir düz çubuk alın l
ve N
zamanları kum havuzuna bırakın . Bir çizgiyi kaç kez geçmesine izin verin c
. Öyleyse Pi = (2 * l * n) / (t * c)
!
Bunu nasıl simüle ediyoruz?
- Girdi al
N,t,l
- İle
N, t, l
tüm varlık pozitif tamsayılar - Aşağıdakileri yapın
N
:- Düzgün rasgele bir tamsayı koordinatı oluşturma
x,y
- İle
1 <= x, y <= 10^6
x,y
uzunluktaki bir çizgi bölümünün merkezidirl
- Düzgün rastgele bir tamsayı oluşturma
a
- İle
1 <= a <= 180
- Izin vermek
P
çizgi segmenti x ekseni geçecek nokta olmak - O zaman
a
açı(x,y), P, (inf,0)
- Düzgün rasgele bir tamsayı koordinatı oluşturma
- Herhangi bir tamsayı
c
için çizgiyi geçen çizgi segmentlerinin sayısını,x = i*t
i
- Dönüş
(2 * l * N) / (t * c)
Şartname
- Giriş
- Esnek, standart yollardan herhangi birinde (örn. İşlev parametresi, STDIN) ve herhangi bir standart biçimde (örn. String, Binary) girdi alın
- Çıktı
- Esnek, standart yollardan herhangi biriyle çıktı verin (örneğin iade, baskı)
- Beyaz boşluk, sondaki ve önde gelen beyaz boşluk kabul edilebilir
- Doğruluk, lütfen en az 4 ondalık doğruluk yeri sağlayın (yani
3.1416
)
- puanlama
- En kısa kod kazanır!
Test Durumları
Rastgele şans nedeniyle çıktınız bunlarla uyumlu olmayabilir. Ancak ortalama olarak, verilen değeri için bu kadar doğruluk elde etmelisiniz 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
Bu zorluklar, Pi'ye yaklaşık olarak doğa ve beyninizi (ve belki de bazı yeniden kullanılabilir kaynakları) gerektiren algoritmaların simülasyonlarıdır. Zombi kıyameti sırasında gerçekten Pi'ye ihtiyacınız varsa, bu yöntemler cephaneyi boşa harcamaz ! Orada dokuz zorluklar toplam.
a
başka bir yöntemle de oluşturulabilir mi? (2D Gauss
t > l
? Aşağıdaki iki çözüm, kavşak kontrolünü biraz basitleştiren bu varsayımı yapar.