数の平方数桁密度(SNDD)-自分で発明-は、連続した数字で見つかった平方数の数と数の長さの比です。たとえば、169は4つの正方形の数字(1、9、16、169)を含む3桁の数字であるため、4/3または1.33の正方形の数字の密度になります。4桁の数字1444には6つの正方形(1、4、4、4、144、1444)があるため、比率は6/4、つまり1.5です。前の例では、正方形の繰り返しが許可されていることに注意してください。また、441は番号1444内で連続して検出できないため、許可されません。
あなたの仕事は、与えられた範囲A-B(包括的)を検索して、最高の二乗数字桁密度を持つ数字を探すプログラムを書くことです。プログラムは、次の仕様に従う必要があります。
- 入力A、Bを1〜1,000,000,000(10億)の範囲で受け取ります。例:
sndd 50 1000
- 結果として、最大のSNDDを持つ数値を返します。同点の場合、最小の数値を返します。
- 0は、0、00、000など、どのような形式の正方形としてもカウントされません。049や0049など、0で始まる正方形もカウントされません。
- 数値全体が正方である必要はないことに注意してください。
例:
sndd 14000 15000
Output: 14441
sndd 300 500
Output: 441
ボーナス:1から1,000,000,000の間で最大のSNDDを持つ数字は何ですか?これが可能な限り大きいのか、それともより大きな範囲がより高い範囲にあるのかを証明できますか?
現在のスコア:
- ルビー:142
- Windows PowerShell:153
- Scala:222
- Python:245
答えが選択されたので、ここにJavaScriptでの(変更されていない)リファレンス実装を示します:http ://jsfiddle.net/ywc25/2/