Görev, bileşik bir sayının önemsiz olmayan bir faktörünü bulmaktır.
Kodunuzun 140 bayttan daha uzun olmamasına bağlı olarak, mümkün olduğunca çabuk bir kompozit sayı için önemsiz bir faktör bulan bir kod yazın. Çıktı sadece bulduğunuz faktör olmalıdır.
Kodunuz girdi alabilir ve çıktıyı, örneğin bir işleve bağımsız değişken olarak dahil olmak üzere uygun herhangi bir şekilde verebilir.
Tüm faktörleri listeleyen test senaryoları (sadece bir tane çıkarmanız gerekir)
187: 11 17
1679: 23 73
14369648346682547857: 1500450271 9576890767
34747575467581863011: 3628273133 9576890767
52634041113150420921061348357: 2860486313 5463458053 3367900313
82312263010898855308580978867: 264575131106459 311111111111113
205255454905325730631914319249: 2860486313 71755440315342536873
1233457775854251160763811229216063007: 1110111110111 1000000000063 1111111999999
1751952685614616185916001760791655006749: 36413321723440003717 48112959837082048697
Yanıtınızı, test için ilgi çekici olabilecek aşağıdaki zor test durumunda puanlamayacağım:
513231721363284898797712130584280850383: 40206835204840513073 12764787846358441471
Puan
Puanınız, yukarıdaki tüm test durumlarını hesaba katmak için birleştirilmiş süredir ve başarısız olan her bir çarpanlara ayırma işlemi için 10 dakika ceza alır (tümü en yakın saniyeye yuvarlanır). Kodunuz diğer tamsayılar için de çalışmalıdır, yani sadece bu cevapları sabit kodlamamalıdır.
10 dakika sonra kodunuzu durduracağım.
İki kişi aynı puanı alırsa, ilk cevap kazanır.
Kısıtlamalar
Kodunuz, tamsayı çarpanlarına ayırma işlemi yapan herhangi bir yerleşik veya kitaplık işlevi kullanamaz. Girişin 256 bit'ten az sürdüğünü varsayabilirsiniz. Tüm giriş numaraları bileşik olacaktır.
Nasıl zaman ayıracağım?
time ./myprog
Zamanlamayı yapmak için tam anlamıyla Ubuntu sistemimde çalışacağım , bu yüzden lütfen tanımladığınız herhangi bir işlevi içeren çalışmam için eksiksiz bir program sağlayın.
Derlenmiş diller için bir not
Derleme süresi makinemde 1 dakikadan fazla sürmemelidir.
Aslında mümkün mü?
Boşluk kısıtlamalarını yoksayarsanız, her biri bilgisayarımda saf Python kodu + pypy kullanarak 2 saniyeden daha kısa sürede çarpanlarına ayrılabilir.
Önemsiz faktoring algoritması nedir?
Pollard'ın rho algoritması hızlı ve golf için uygundur. Tabii ki bir tamsayıyı da hesaba katmanın başka yolları da vardır.
Kuadratik elek daha da hızlıdır . 140 bayta sıkıştırmak ciddi bir zorluk gibi görünüyor.
Ana skorlar
- SEJPM , son test vakası için 10 dakika ceza + Haskell'de 16 saniye
2
veya 2, 2
?
2 ** 1024
mi?