代数曲线是“ 2D平面”的某个“ 1D子集”,可以描述为{(x,y) in R^2 : f(x,y)=0 }
多项式的零集f
。在这里,我们将2D平面视为真实平面R^2
这样我们就可以轻松想象出这种曲线的样子,基本上是可以用铅笔绘制的东西。
例子:
0 = x^2 + y^2 -1
半径为1的圆0 = x^2 + 2y^2 -1
椭圆0 = xy
一个十字形状,在x轴的基本上联合和y轴0 = y^2 - x
抛物线0 = y^2 - (x^3 - x + 1)
一个椭圆曲线0 = x^3 + y^3 - 3xy
笛卡尔的叶0 = x^4 - (x^2 - y^2)
交往0 = (x^2 + y^2)^2 - (x^3 - 3xy^2)
三叶草0 = (x^2 + y^2 - 1)^3 + 27x^2y^2
天体
任务
给定多项式 f
(定义如下)和x / y范围,输出至少100x100像素的黑白图像,该曲线在白色背景上显示为黑线。
细节
颜色:您可以选择其他两种颜色,将它们区分开来很容易。
绘图:除了像素图像外,您还可以将该图像输出为ascii-art,其中背景“像素”应为空格/下划线或其他“看起来为空”的字符,而该行可以由看起来为“完整的”喜欢M
或X
或#
。
您不必担心别名。
您只需要在多项式的符号从该线的一侧改变到另一侧的位置上绘制线(这意味着您可以使用行进平方算法),而不必正确绘制“病理情况,如0 = x^2
符号在其中从线的一侧移到另一侧时,线不会改变,但线应该是连续的,并分隔符号不同的区域f(x,y)
。
多项式:多项式(m+1) x (n+1)
以(实数)系数列表的矩阵/列表形式给出,在下面的示例中,系数的项在其位置给出:
[ 1 * 1, 1 * x, 1 * x^2, 1 * x^3, ... , 1 * x^n ]
[ y * 1, y * x, y * x^2, y * x^4, ... , y * x^n ]
[ ... , ... , ... , ... , ... , ... ]
[ y^m * 1, y^m * x, y^m * x^2, y^m * x^3 , ..., y^m * x^n]
如果愿意,可以假定矩阵为正方形(可以总是通过必要的零填充来完成),并且如果需要,还可以假定矩阵的大小作为附加输入给出。
在下面,上面的示例表示为这样定义的矩阵:
Circle: Ellipse: Parabola: Cross: Elliptic Curve: e.t.c
[-1, 0, 1] [-1, 0, 1] [ 0,-1] [ 0, 0] [-1, 1, 0,-1]
[ 0, 0, 0] [ 0, 0, 0] [ 0, 0] [ 0, 1] [ 0, 0, 0, 0]
[ 1, 0, 0] [ 2, 0, 0] [ 1, 0] [ 1, 0, 0, 0]
x范围/ y范围的测试用例:
(以一种不太可读但更好的可粘贴粘贴的格式在pastebin上提供。)
Circle:
[-1, 0, 1] [-2,2] [-2,2]
[ 0, 0, 0]
[ 1, 0, 0]
Ellipse:
[-1, 0, 1] [-2,2] [-1,1]
[ 0, 0, 0]
[ 2, 0, 0]
Cross:
[ 0, 0] [-1,2] [-2,1]
[ 0, 1]
Parabola:
[ 0,-1] [-1,3] [-2,2]
[ 0, 0]
[ 1, 0]
Elliptic Curve:
[-1, 1, 0,-1] [-2,2] [-3,3]
[ 0, 0, 0, 0]
[ 1, 0, 0, 0]
Folium of Descartes:
[ 0, 0, 0, 1] [-3,3] [-3,3]
[ 0, -3, 0, 0]
[ 0, 0, 0, 0]
[ 1, 0, 0, 0]
Lemniscate:
[ 0, 0, -1, 0, 1] [-2,2] [-1,1]
[ 0, 0, 0, 0, 0]
[ 1, 0, 0, 0, 0]
Trifolium:
[ 0, 0, 0,-1, 1] [-1,1] [-1,1]
[ 0, 0, 0, 0, 0]
[ 0, 3, 2, 0, 0]
[ 0, 0, 0, 0, 0]
[ 1, 0, 0, 0, 0]
Astroid:
[ -1, 0, 3, 0, -3, 0, 1] [-1,1] [-1,1]
[ 0, 0, 0, 0, 0, 0, 0]
[ 3, 0, 21, 0, 3, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0]
[ -3, 0, 3, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0]
[ 1, 0, 0, 0, 0, 0, 0]
m
x n
,而是(m+1)
x (n+1)
。我们将什么作为输入:m, n
或m+1,n+1
?还是我们可以选择?