3
การท้าทายรหัส Star-Spangled
ธงของสหรัฐอเมริกาประกอบด้วยใน 50 ดาวของมันเป็นตัวแทนของ 50 รัฐ ในอดีตเมื่อมีรัฐน้อยกว่ามีดาวน้อยกว่าแน่นอนและมีการจัดเรียงต่างกัน ตัวอย่างเช่นตั้งแต่ปี 1912-2502 (หลังเข้านิวเม็กซิโกและแอริโซนา แต่ก่อนถึงอลาสก้า) มีดาว 48 ดวงในรูปสี่เหลี่ยมผืนผ้า 6 × 8 สี่เหลี่ยม ธง 37 ดาวที่ใช้จาก 1867-1877 (หลังจากเข้าเนบราสก้า แต่ก่อนโคโลราโด) มีรูปแบบดาวไม่สมมาตร ในกรณีที่มีการเพิ่มรัฐที่ 51ในอนาคตสถาบันทหารบกได้พัฒนารูปแบบเบื้องต้นสำหรับธงใหม่แล้ว แต่ไม่มีอัลกอริทึมทั่วไปสำหรับการจัดเรียงดาวดังนั้นลองมาสร้างมันกัน! ความท้าทาย เขียนโปรแกรมที่จะกำหนดจำนวนดาวที่ต้องการในแคนตัน (ส่วนสีน้ำเงิน) ของธงสหรัฐอเมริกาออกพิกัดที่เหมาะสมที่สุดเพื่อวางดาวเหล่านั้น ระบบพิกัดถูกกำหนดด้วยตำบล [ ไม่ใช่ธงทั้งหมด] ด้วย0≤x≤Wและ0≤y≤H สำหรับจุดประสงค์ของการท้าทายนี้การจัดเรียง "ดีที่สุด" ถูกกำหนดให้เป็นหนึ่งเดียวที่ช่วยลดระยะห่างเฉลี่ย (Euclidean) ระหว่างจุดหนึ่งในมณฑลและศูนย์กลางของดาวที่ใกล้ที่สุด อัลกอริทึมที่ตรงไปตรงมา (ถ้าอาจจะไม่ดี) เพื่อประมาณค่านี้คือ: def mean_distance_to_nearest_star(stars, width, height, point_density=100): """ Approximate …