Mật độ chữ số số vuông (SNDD) của một số - do tôi tự phát minh - là tỷ lệ của số lượng các số vuông được tìm thấy trong các chữ số liên tiếp với độ dài của số. Chẳng hạn, 169 là một số có 3 chữ số chứa 4 số vuông - 1, 9, 16, 169 - và do đó có mật độ chữ số số là 4/3 hoặc 1,33. Số có 4 chữ số 1444 có 6 ô vuông - 1, 4, 4, 4, 144, 1444 - và do đó tỷ lệ là 6/4 hoặc 1,5. Lưu ý trong ví dụ trước rằng hình vuông được phép lặp lại. Ngoài ra, 441 không được phép, bởi vì nó không thể được tìm thấy liên tiếp bên trong số 1444.
Nhiệm vụ của bạn là viết một chương trình tìm kiếm một phạm vi A - B (đã bao gồm) cho số có mật độ chữ số cao nhất. Chương trình của bạn phải tuân theo các thông số kỹ thuật sau:
- Lấy đầu vào A, B trong phạm vi 1 đến 1.000.000.000 (1 tỷ). Thí dụ:
sndd 50 1000
- Trả về kết quả là số có SNDD lớn nhất. Trong trường hợp hòa, trả lại số nhỏ nhất.
- 0 không được tính là một hình vuông dưới mọi hình thức, 0, 00, 000, v.v. Không phải hình vuông bắt đầu bằng 0, chẳng hạn như 049 hoặc 0049.
- Lưu ý rằng toàn bộ số không phải là số vuông.
Ví dụ:
sndd 14000 15000
Output: 14441
sndd 300 500
Output: 441
Tiền thưởng: Con số nào có SNDD lớn nhất trong khoảng từ 1 đến 1.000.000.000? Bạn có thể chứng minh liệu đây là lớn nhất có thể, hoặc có thể có một cái lớn hơn trong phạm vi cao hơn?
Điểm hiện tại:
- Hồng ngọc: 142
- Windows PowerShell: 153
- Scala: 222
- Con trăn: 245
Bây giờ, một câu trả lời đã được chọn, đây là triển khai tham chiếu (chưa được chỉnh sửa) của tôi trong JavaScript: http://jsfiddle.net/ywc25/2/