ความหนาแน่นเลขฐานสองจำนวน (SNDD) ของตัวเลข - คิดค้นด้วยตัวเอง - คืออัตราส่วนของการนับจำนวนสแควร์ที่พบในหลักต่อเนื่องกับความยาวของตัวเลข ตัวอย่างเช่น 169 เป็นตัวเลข 3 หลักที่มี 4 ช่องสี่เหลี่ยมคือ 1, 9, 16, 169 - และดังนั้นจึงมีความหนาแน่นตัวเลขสี่หลักเท่ากับ 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 (1 พันล้าน) ตัวอย่าง:
sndd 50 1000
- ส่งคืนผลลัพธ์เป็นตัวเลขที่มี SNDD ที่ใหญ่ที่สุด ในกรณีที่เสมอกันให้ส่งคืนจำนวนที่น้อยที่สุด
- 0 จะไม่นับเป็นรูปสี่เหลี่ยมในรูปแบบใด ๆ 0, 00, 000 และอื่น ๆ ทั้งสองจะเริ่มต้นด้วย 0 เช่น 049 หรือ 0049
- โปรดทราบว่าจำนวนทั้งหมดไม่จำเป็นต้องเป็นตัวเลขจตุรัส
ตัวอย่าง:
sndd 14000 15000
Output: 14441
sndd 300 500
Output: 441
โบนัส: SNDD ที่มีจำนวนมากที่สุดระหว่าง 1 ถึง 1,000,000,000 คืออะไร คุณสามารถพิสูจน์ได้ว่านี่เป็นสิ่งที่ใหญ่ที่สุดหรืออาจมีขนาดใหญ่กว่าในช่วงที่สูงขึ้นได้ไหม
คะแนนปัจจุบัน:
- ทับทิม: 142
- Windows PowerShell: 153
- สกาล่า: 222
- Python: 245
ตอนนี้เลือกคำตอบแล้วนี่คือการนำการอ้างอิง (ungolfed) ของฉันไปใช้ใน JavaScript: http://jsfiddle.net/ywc25/2/