1
包装圈
看一下这张图片。具体而言,如何布置两端的孔。 (图片来源) 请注意,此图像中的管道是如何以六边形图案包装的。众所周知,在2D中,六边形格子是最密集的圆堆积。在这一挑战中,我们将专注于最大程度地减少圆包装的周长。可视化周界的一种有用方法是,想象将橡皮筋套在圆圈集合上。 任务 给定一个正整数n作为输入,请显示n尽可能紧密排列的一组圆圈。 规则和说明 假设圆的直径为1个单位。 要被最小化的变量是周长,其被定义为长度凸包的的中心组中的圆圈。看一下这张图片: 直线上的三个圆的周长为4(凸包是2x0矩形,对2计数两次),以120度角排列的圆的周长约为3.85,三角形的周长为只有3个单位。请注意,我忽略了实际周长的其他pi单位,因为我仅查看圆的中心,而不是圆的边缘。 对于任何给定,可能(几乎肯定会有)多种解决方案n。您可以自行决定输出其中的任何一个。方向无关紧要。 圆必须在六边形格子上。 圆圈的直径必须至少为10像素,并且可以填充或不填充。 您可以编写程序或函数。 输入可以通过STDIN作为函数参数或最接近的等效参数进行。 输出可以显示或输出到文件。 例子 下面我有n从1到10的有效和无效输出示例(仅对前五个有效示例)。有效的例子在左边;右侧的每个示例都比相应的有效示例大。 非常感谢steveverrill编写此挑战的帮助。包装愉快!