Bu resme bir bakın. Spesifik olarak, uçlardaki deliklerin nasıl yerleştirildiği ile.
( Görüntü kaynağı )
Bu görüntüdeki boruların altıgen bir şekilde nasıl paketlendiğine dikkat edin. 2B'de altıgen bir kafesin en yoğun daire ambalajı olduğu bilinmektedir . Bu mücadelede, bir daire çemberinin çevresini en aza indirmeye odaklanacağız. Çevreyi görselleştirmenin kullanışlı bir yolu, daire koleksiyonunun etrafına lastik bir bant yerleştirmeyi hayal etmektir.
Görev
n
Girdi olarak pozitif bir tamsayı verildiğinde n
mümkün olduğunca sıkı paketlenmiş daireler topluluğunu gösterin .
Kurallar ve Açıklamalar
- Dairelerin 1 birim çapında olduğunu varsayalım.
- En aza indirilmesi için, değişken olarak tanımlanır çevre, uzunluğu dışbükey bölgesinin merkezleri grubunda çevrelerin. Şu resme bir bakın:
Düz bir çizgideki üç daire, 4'lük bir çevreye sahiptir (dışbükey gövde 2x0 dikdörtgendir ve 2, iki kere sayılır), 120 derecelik bir açıyla düzenlenmiş olanlar, yaklaşık 3.85'lik bir çevreye sahiptir ve üçgen sadece 3 adet. Asıl çevre olan ek pi birimlerini görmezden geldiğime dikkat edin, çünkü sadece çevrelerin merkezlerine bakıyorum, kenarlarını değil.
- Herhangi biri için birden fazla çözüm olabilir (ve neredeyse kesinlikle olacaktır)
n
. Bunlardan herhangi birini kendi takdirinize bağlı olarak çıkarabilirsiniz. Oryantasyon önemli değil. - Daireler altıgen bir kafes üzerinde olmalıdır.
- Dairelerin çapı en az 10 piksel olmalıdır ve doldurulabilir veya doldurulmayabilir.
- Bir program veya işlev yazabilirsiniz.
- Girdi, işlev argümanı veya en yakın eşdeğeri olarak STDIN üzerinden alınabilir.
- Çıktı görüntülenebilir veya bir dosyaya aktarılabilir.
Örnekler
Aşağıda 1'den 10'a kadar n için geçerli ve geçersiz çıktılar var (yalnızca ilk beş için geçerli örnekler). Geçerli örnekler soldadır; sağdaki her örnek, karşılık gelen geçerli örnekten daha büyük bir çevreye sahiptir.
Bu zorluğu yazmada yardım için steveverrill'e çok teşekkürler. Mutlu paketleme!