ลองดูที่ภาพนี้ โดยเฉพาะอย่างยิ่งวิธีการจัดหลุมที่ปลาย
( แหล่งรูปภาพ )
สังเกตว่าท่อในภาพนี้บรรจุในรูปแบบหกเหลี่ยมได้อย่างไร เป็นที่ทราบกันดีว่าใน 2 มิติโครงตาข่ายหกเหลี่ยมนั้นเป็นที่บรรจุวงกลมที่หนาแน่นที่สุด ในความท้าทายนี้เราจะมุ่งเน้นไปที่การลดขอบเขตของวงกลมให้เหลือน้อยที่สุด วิธีหนึ่งที่มีประโยชน์ในการมองเห็นเส้นรอบนอกคือการจินตนาการให้ใส่ยางรัดรอบคอลเลกชันของวงกลม
งาน
รับค่าn
เป็นจำนวนเต็มบวกเป็นอินพุตแสดงชุดของn
วงกลมที่อัดแน่นที่สุด
กฎและคำชี้แจง
- สมมติว่าวงกลมมีเส้นผ่านศูนย์กลาง 1 หน่วย
- ตัวแปรที่จะย่อเล็กสุดคือความยาวของเส้นรอบวงซึ่งถูกกำหนดให้เป็นฮัลล์นูนของกึ่งกลางของวงกลมในกลุ่ม ดูรูปนี้:
วงกลมสามวงในแนวเส้นตรงมีเส้นรอบวงของ 4 (ตัวเรือนูนเป็นสี่เหลี่ยมผืนผ้า 2x0 และ 2 นับเป็นสองเท่า) ที่จัดเรียงในมุม 120 องศาจะมีเส้นรอบวงประมาณ 3.85 และสามเหลี่ยมมีเส้นรอบวง เพียง 3 หน่วย โปรดทราบว่าฉันไม่สนใจหน่วย pi เพิ่มเติมที่ขอบเขตปริมณฑลที่แท้จริงจะเป็นเพราะฉันแค่ดูที่ศูนย์กลางของวงกลมไม่ใช่ขอบของพวกเขา
- อาจมี (และเกือบจะแน่นอนจะ)
n
การแก้ปัญหาหลายสำหรับการใดก็ตาม คุณสามารถส่งออกสิ่งเหล่านี้ตามดุลยพินิจของคุณ การวางแนวไม่สำคัญ - วงกลมจะต้องอยู่บนโครงตาข่ายหกเหลี่ยม
- วงกลมต้องมีเส้นผ่านศูนย์กลางอย่างน้อย 10 พิกเซลและอาจมีการเติมได้หรือไม่
- คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น
- อินพุตอาจถูกใช้ผ่าน STDIN เป็นอาร์กิวเมนต์ฟังก์ชันหรือเทียบเท่าที่ใกล้เคียงที่สุด
- เอาท์พุทอาจจะปรากฏขึ้นหรือส่งออกไปยังไฟล์
ตัวอย่าง
ด้านล่างฉันมีตัวอย่างเอาต์พุตที่ถูกต้องและไม่ถูกต้องสำหรับ n ตั้งแต่ 1 ถึง 10 (ตัวอย่างที่ถูกต้องสำหรับห้ารายการแรกเท่านั้น) ตัวอย่างที่ถูกต้องอยู่ทางซ้าย ทุกตัวอย่างทางด้านขวามีเส้นรอบวงมากกว่าตัวอย่างที่ใช้ได้
ขอบคุณสตีฟเวอร์ริลล์มากสำหรับความช่วยเหลือในการเขียนความท้าทายนี้ มีความสุขบรรจุ!