正则字形


16

给定顶点数量n ≥ 3和“步长” 1 ≤ m < n/2 (指示两个连接的顶点之间的距离),输出相应规则多边形的图形表示。如果该多边形包含多个闭合回路,则每个回路必须以不同的线条颜色呈现。(如果这听起来令人困惑,那么下面的示例将有望清除这些问题。)

规则

任何合理的问题解决方案都可能会自动满足这些规则-它们只是在此处对输出的参数施加一些约束,以防止出现诸如“此黑色块完全是一个多义字,但您看不到它的原因”之类的答案。我将线宽设置为9000以上。”

  • 您可以将多边形图呈现到文件(可以将其写入光盘或标准输出流)中,也可以将其显示在屏幕上。
  • 您可以使用矢量或栅格图形。如果对输出进行光栅化,则图像的尺寸必须为400x400像素或更大,并且多边形的半径(从中心到每个顶点的距离)必须在边长的35%和50%之间。
  • 多边形的纵横比必须为1(以使其顶点位于适当的圆上)-图像的画布可能为矩形。
  • 测线图的线的粗细不得超过半径的5%(当然,粗线的粗细必须为非零)。
  • 除了多边形图,您还可以渲染轴或框架,但只能渲染其他东西。
  • 您可以选择任何(纯色)背景色。
  • 对于由多个闭环组成的组合词,您必须支持至少6种视觉上不同的颜色,所有这些颜色都必须与背景不同。(只要阴影在整个光谱中充分散布,灰度就可以了。)您的代码仍必须可以运行6个以上的循环,但是对于任何其他循环,颜色都不必是可区分的(即,您也可以重用)之前循环中的颜色)。

这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。

例子

以下是所有输出n = 16(直到列对应,n行对应m):

在此处输入图片说明 点击查看大图。

作为更大的示例n,这里(n, m) = (29, 11)(30, 12)

在此处输入图片说明在此处输入图片说明


那么抗锯齿和东西呢?(因为我们正在处理斜线)
Optimizer

1
@Optimizer我不会规定抗锯齿算法。只要线条清晰可见,就可以对线条进行混叠或抗锯齿。用你最好的判断。
Martin Ender

Answers:


5

MATLAB,85 81

该功能在屏幕上显示图。

function f(n,m)
hold all
axis equal
for k=1:gcd(m,n)
plot(i.^(4*(k:m:n^2)/n))
end

n = 30,m = 12的结果: f(30,12)


我不确定这行得通;如果我做得正确,它会输出这个图片 30,12,参见:bit.ly/1GFZni7
durron597

@ durron597它实际上可以在Matlab中工作,但是该函数不能立即重用,因为hold all导致下一个图的绘制是在第一个图的上方绘制的...我不知道我们是否对函数的可重用性达成共识诚实。
Martin Ender

@MartinBüttner无论如何,应该hold on保存一个字节。如果添加四个字节,它将变为可重用(clf\n
durron597

原来我们有一个共识,几个月前我什至发布了问题并回答了自己。oO因此,通过该meta帖子,如果没有释放的东西,这将是无效的hold
马丁·恩德 Martin Ender)

@MartinBüttner如果您更改hold allclf\nhold on是否可以解决问题?
durron597

3

果酱,114

"P2"N400:ASAN6N0aA*aA*q~:M;:K{:CK,f{M*+K%P*2*K/_[mc)\ms)]199f*}_+2ew{~1$.-Af/A,\ff*\f.+{:mo~_3$=@C6%)tt}/}/}/Sf*N*

它以ASCII PGM格式输出图像。

您可以在线尝试,但输出时间很长。你可以改变400199更小的数字来缩小图像尺寸。

CJam没有图像,图形,线条或形状的概念,因此我以像素为单位在正方形矩阵中生成图像(一个数字代表每个像素的灰色阴影)。

这就是结果的样子 30 12

多义词


1

Mathematica,70个字节

ListPolarPlot[Table[{2Pi(i+j#2)/#,1},{i,GCD@##},{j,#+1}],Joined->1>0]&

好吧...这是我的参考实现,到目前为止击败了两个提交。我无意赢得自己的挑战,所以我希望有人能战胜这一挑战。

输出就像挑战中的情节一样,只是我不在这里删除轴:

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.