La densità delle cifre dei numeri quadrati (SNDD) di un numero - inventato da me stesso - è il rapporto tra il numero di numeri quadrati trovati in cifre consecutive e la lunghezza del numero. Ad esempio, 169 è un numero di 3 cifre contenente 4 numeri quadrati - 1, 9, 16, 169 - e quindi ha una densità di cifre quadrate di 4/3 o 1,33. Il numero a 4 cifre 1444 ha 6 quadrati - 1, 4, 4, 4, 144, 1444 - e quindi un rapporto di 6/4 o 1,5. Si noti nell'esempio precedente che i quadrati possono essere ripetuti. Inoltre, 441 non è consentito, poiché non può essere trovato consecutivamente all'interno del numero 1444.
Il tuo compito è scrivere un programma che cerchi in un determinato intervallo A - B (incluso) il numero con la più alta densità di cifre in numeri quadrati. Il tuo programma dovrebbe rispettare le seguenti specifiche:
- Prendi input A, B nell'intervallo da 1 a 1.000.000.000 (1 miliardo). Esempio:
sndd 50 1000
- Restituisce di conseguenza il numero con il più grande SNDD. In caso di pareggio, restituire il numero più piccolo.
- 0 non conta come un quadrato in nessuna forma, 0, 00, 000, ecc. Né i quadrati iniziano con 0, come 049 o 0049.
- Si noti che l'intero numero non deve essere un numero quadrato.
Esempi:
sndd 14000 15000
Output: 14441
sndd 300 500
Output: 441
Bonus: qual è il numero con il più grande SNDD tra 1 e 1.000.000.000? Puoi provare se questo è il più grande possibile o se ce ne potrebbe essere uno più grande in un intervallo più alto?
Punteggi attuali:
- Rubino: 142
- Windows PowerShell: 153
- Scala: 222
- Python: 245
Ora che è stata selezionata una risposta, ecco la mia implementazione di riferimento (non golfizzata) in JavaScript: http://jsfiddle.net/ywc25/2/