Kepadatan digit angka kuadrat (SNDD) dari suatu angka - diciptakan sendiri - adalah perbandingan jumlah angka kuadrat yang ditemukan dalam digit berurutan dengan panjang angka. Misalnya, 169 adalah angka 3 digit yang mengandung 4 angka kuadrat - 1, 9, 16, 169 - dan dengan demikian memiliki kepadatan angka angka kuadrat 4/3, atau 1,33. Angka 4 digit 1444 memiliki 6 kotak - 1, 4, 4, 4, 144, 1444 - dan dengan demikian rasio 6/4, atau 1,5. Perhatikan pada contoh sebelumnya bahwa kotak diizinkan untuk diulang. Juga, 441 tidak diperbolehkan, karena tidak dapat ditemukan secara berurutan di dalam nomor 1444.
Tugas Anda adalah menulis program yang mencari rentang A - B (inklusif) untuk angka dengan kepadatan digit angka kuadrat tertinggi. Program Anda harus mematuhi spesifikasi berikut:
- Ambil input A, B dalam kisaran 1 hingga 1.000.000.000 (1 miliar). Contoh:
sndd 50 1000
- Hasilnya adalah nomor dengan SNDD terbesar. Dalam kasus seri, kembalikan nomor terkecil.
- 0 tidak dihitung sebagai kotak dalam bentuk apa pun, 0, 00, 000, dll. Kotak juga tidak dimulai dengan 0, seperti 049 atau 0049.
- Perhatikan bahwa seluruh angka tidak harus berupa angka kuadrat.
Contoh:
sndd 14000 15000
Output: 14441
sndd 300 500
Output: 441
Bonus: Berapa angka dengan SNDD terbesar antara 1 dan 1.000.000.000? Bisakah Anda membuktikan apakah ini adalah yang terbesar, atau mungkin ada yang lebih besar dalam kisaran yang lebih tinggi?
Skor saat ini:
- Ruby: 142
- Windows PowerShell: 153
- Scala: 222
- Python: 245
Sekarang setelah jawaban telah dipilih, berikut ini adalah implementasi referensi saya (tidak diunggah) dalam JavaScript: http://jsfiddle.net/ywc25/2/