Pozitif bir sayı alan n
ve n
hesaplamak için yinelemeli bir algoritmanın adımlarını gerçekleştiren bir fonksiyon veya tam bir program yazın; bu, kuadratik yakınsaması olan (yani her yinelemede doğru basamak sayısını yaklaşık iki katına çıkar) daha sonra 2 n doğru basamak (dahil olmak üzere) başlangıç 3). Böyle bir algoritma Gauss-Legendre algoritmasıdır , ancak isterseniz farklı bir algoritma kullanmakta özgürsünüz.
Örnekler:
giriş 1
→ çıkış 3.1
girişi 2
→ çıkış 3.141
girişi 5
→ çıkış3.1415926535897932384626433832795
Gereksinimler:
- Algoritmanın her yinelemesi toplama, çıkarma, çarpma, bölme, güç ve kök gibi sabit sayıda temel işlemi gerçekleştirmelidir (tamsayı üs / derece ile) - "büyük" tamsayı / ondalık sayılar üzerinde yapılan her işlem bir çift sayılır dahili olarak bir veya daha fazla döngü içeriyorsa. Açık olmak gerekirse, trigonometrik fonksiyonlar ve karmaşık sayıları içeren güçler temel operasyonlar değildir.
- Algoritmanın, aynı zamanda sabit sayıda işlem içermesi gereken bir başlatma adımına sahip olması beklenir.
- Algoritmanın 2 n doğru basamağa ulaşmak için 1 veya 2 tekrara ihtiyacı varsa,
n+2
sadece yerine yineleme yapabilirsinizn
. - Net yeterli değildi, doğru 2'den sonra n basamak, programınız olmalıdır değil (örneğin, daha doğru basamak, yanlış basamak veya Shakespeare'in bütün eserlerinde gibi) başka bir şey yazdırın.
- Programınız
n
1 ile en az 20 arasında değerleri desteklemelidir . - Programınız
n
modern bir bilgisayarda = 20 saatten fazla bir saat sürmemelidir (zor bir kural değil, makul tutmaya çalışın). - Program, algoritmanın başlatılmasından ve ilk yinelemesinden sonra 20'den fazla doğru rakam elde etmemelidir.
- Program, Linux'ta serbestçe kullanılabilen yazılımlar kullanılarak çalıştırılabilir olmalıdır.
- Kaynak kod yalnızca ASCII karakterleri kullanmalıdır.
puanlama:
Basit kod golf, en kısa kod kazanır.
Kazanan:
Kazanan Digital Trauma, nihayet kodunu n = 20'de çalıştırmayı bitirdim (şaka yapıyordum). Özel ödülü çok hızlı python çözümü ve farklı algoritması için primo'ya gidiyor :)
~q^(n^2)
oradaki 1. bölüme ve oradaki ~q^2
2. bölüme göredir.