Kendim tarafından icat edilen bir sayının kare sayı basamak yoğunluğu (SNDD), art arda basamaklarda bulunan kare sayılarının sayısının sayının uzunluğuna oranıdır. Örneğin 169, 4 kare sayısı - 1, 9, 16, 169 - içeren 3 basamaklı bir sayıdır ve bu nedenle kare sayısı basamak yoğunluğu 4/3 veya 1,33'tür. 4 haneli 1444 sayısı 6 kareye - 1, 4, 4, 4, 144, 1444 - ve dolayısıyla 6/4 veya 1.5 oranına sahiptir. Önceki örnekte, karelerin tekrarlanmasına izin verildiğine dikkat edin. Ayrıca, 441'e izin verilmez, çünkü 1444 sayısının içinde art arda bulunamaz.
Göreviniz, en yüksek kare sayısı basamak yoğunluğuna sahip sayı için belirli bir A - B aralığını (dahil) araştıran bir program yazmaktır. Programınız aşağıdaki özelliklere uymalıdır:
- A, B girişini 1 ila 1.000.000.000 (1 milyar) aralığında alın. Misal:
sndd 50 1000
- Sonuç olarak en büyük SNDD'ye sahip sayıyı döndürün. Beraberlik durumunda, en küçük sayıyı döndürün.
- 0, 0, 00, 000 vb. Şeklinde herhangi bir kare olarak sayılmaz. 0 ile başlayan, 049 veya 0049 gibi kareler de yoktur.
- Sayının tamamının kare sayı olması gerekmediğini unutmayın.
Örnekler:
sndd 14000 15000
Output: 14441
sndd 300 500
Output: 441
Bonus: 1 ile 1.000.000.000 arasında en büyük SNDD'ye sahip sayı nedir? Bunun mümkün olan en büyük olup olmadığını veya daha yüksek bir aralıkta daha büyük bir tane olduğunu kanıtlayabilir misiniz?
Güncel Skorlar:
- Yakut: 142
- Windows PowerShell: 153
- Scala: 222
- Python: 245
Bir yanıt seçildiğine göre, JavaScript'teki (ungolfed) referans uygulamam: http://jsfiddle.net/ywc25/2/