前几天在方形纸上乱涂乱画时,我想到了上面的负数数字字体。如果尚未发现,上述形状之间的间隔会产生黄金分割率1.618033988749。在此挑战中,您的任务是将数字作为输入并完全按照上面的示例所示呈现它。
这些是如何创建的。所有行将位于规则的网格上,因此各个数字由少量的网格单元组成。这是10位数字的形状(此挑战我们将忽略小数点):
是的,这7与顶部的黄金分割率示例不同。我有点搞砸了。我们将继续进行。
请注意每个数字是五个单元格高,三个单元格宽。要渲染数字,您可以想象将其所有数字彼此相邻放置,以使每对数字之间恰好有一个空列。例如,以319
输入为例:
注意,我们添加了一个前导和尾随的空列。现在我们反转单元格:
然后,输出应为所得多边形的边界:
当然,您可以通过任何其他方式生成结果,只要呈现的输出看起来相同即可。
输入值
- 您可以编写程序或函数,将通过STDIN(或最接近的替代方案)的输入,命令行参数或函数参数作为字符串或数字列表。(您不能输入数字,因为那将不允许您支持前导零。)
- 您可以假设输入中将不再有16位数字。
输出量
- 输出可以显示在屏幕上或以通用图像格式写入文件。
- 您可以同时使用光栅图形和矢量图形。
- 在任何一种情况下,基础网格的单元的纵横比都必须为1(即,单元应为正方形)。
- 对于光栅图形,每个像元应至少覆盖20 x 20像素。
- 这些线的宽度不得超过像元大小的10%。由于这里的别名,我愿意留出一两个像素的余地。
- 线条和背景可以是任何两种可以明显区分的颜色,但是线条所形成的形状一定不能填充(也就是说,内部也应该是背景颜色)。
- 每个闭环内不得有间隙。
- 当然,整个结果必须可见。
测试用例
这是10个输入,它们一起涵盖所有可能的相邻数字对,以及每个可能的前导和尾随数字:
07299361548
19887620534
21456837709
39284106657
49085527316
59178604432
69471338025
79581224630
89674235011
97518264003
这是这些的预期结果:
确保您的代码在给出一个数字时也可以工作(我不想在这里包括预期的结果,因为它们应该很明显,并且测试用例部分已经足够膨胀了)。