用单个环绘制不规则形状

时间:2013-11-22 00:41:58

标签: optimization

最近我一直在研究一个问题,即程序是“绘制”(使用ASCII空格和星号)三个向下指向和两个向上指向的三角形,变量height根据用户的方式改变它们的高度希望它们形成以下形状:

*****************************
 *******   *******   *******
  *****     *****     *****
   ***   *   ***   *   ***
    *   ***   *   ***   *
       *****     *****
      *******   *******
     *******************
(when user selects the height variable = 5)

*****************************************  
 ***********   ***********   ***********
  *********     *********     *********  
   *******   *   *******   *   *******
    *****   ***   *****   ***   ***** 
     ***   *****   ***   *****   ***
      *   *******   *   *******   *
         *********     *********
        ***********   ***********
       ****************************
(when user selects the height variable = 7)

等等。

我确实解决了这个问题,因为蛮力方法非常简单,但我意识到它的优化程度有多差。我所做的是将它分成三个部分:三个第一行,中心和最后三行。然后,我们在第一行中绘制6 * height - 1个星号,我们在第二行中打印一个空格,然后使用这些对循环三次((3 * height - 3个星号),(在第二行中有3个空格)),在第三行中有三个空格和略微修改过的对,然后是一个改变的方法(因为我们现在也必须考虑向上三角形)中心等等。它运作良好,但它有很多很多循环,可以缩短一个长篇故事。

今天,在课堂上讨论问题时,我的解决方案被接受了,但是教授提到所有这些都可以通过一个循环完成。它只是让我思考,因为我无法想到任何方法会绘制这样一个不规则的形状,只有一个循环。当一些坐标相等被满足时,通过简单地打印“*”看起来不是这样的,因为这里似乎没有。你能帮帮我吗?是否真的可以用一个循环绘制它?

1 个答案:

答案 0 :(得分:0)

而不是

3 times
   top row
height - 3 times
   center row
3 times
   bottom row

你可以做到

height + 3 times
  if 3 top rows
    top row
  else if 3 bottom rows
    bottom row
  else
    center row
相关问题