我需要这样的印刷图:
function draw123(n)
x=1:n;
y=zeros(1,n);
l=1;
x=[x,n]; y=[y,l];
x=[x,4,3,2]; y=[y,1,1,1]; % from this moment rest of code(with this line) work correctly only for n==6
x=[x,2]; y=[y,2];
x=[x,3,4,5]; y=[y,2,2,2];
plot(x,y)
我的代码仅适用于n == 6但它应该适用于其他所有n(1,2,...,99,100)
答案 0 :(得分:0)
这不是一个组合的简单任务,但这应该有效。您需要创建一个每次都给出正确点的公式。为了使它更简单,我创建了两个变量lineLength
和direction
,它们计算下一行必须有多长,以及它是正方向还是负方向。垂直点在前一个之间交替,在前一个加之一之间交替。此外,我需要访问循环中的前一个元素,所以我在循环之前设置前两个元素。我还在循环之后设置了最后一个值,因为它的行为与其他值不同。
function draw123(n)
y(2*n+1,1) = 0;
x = y;
x(2) = n;
for k = 3:2:2*n-1
x(k) = x(k-1);
lineLength = (n-(k-1)/2);
direction = (-1)^((k-1)/2); % +1 or -1
x(k+1) = lineLength * direction + x(k-1);
y(k) = y(k-1)+1;
y(k+1) = y(k);
end
x(end) = x(end-1);
y(end) = y(end-1)+1;
plot(x,y,'r');