首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用单个循环绘制不规则形状

使用单个循环绘制不规则形状
EN

Stack Overflow用户
提问于 2013-11-22 08:41:58
回答 1查看 35关注 0票数 0

最近我一直在解决一个问题,程序是用变量height来“绘制”(使用ASCII空格和星号)三个向下的三角形和两个向上的三角形,这个变量可以根据用户的意愿改变它们的高度,使它们形成如下形状:

代码语言:javascript
复制
*****************************
 *******   *******   *******
  *****     *****     *****
   ***   *   ***   *   ***
    *   ***   *   ***   *
       *****     *****
      *******   *******
     *******************
(when user selects the height variable = 5)

和:

代码语言:javascript
复制
*****************************************  
 ***********   ***********   ***********
  *********     *********     *********  
   *******   *   *******   *   *******
    *****   ***   *****   ***   ***** 
     ***   *****   ***   *****   ***
      *   *******   *   *******   *
         *********     *********
        ***********   ***********
       ****************************
(when user selects the height variable = 7)

诸若此类。

我确实解决了这个问题,因为暴力方法非常简单,但我意识到这是多么糟糕的优化。我所做的是将它分成三个部分:三个第一行,中间和最后三行。然后,我们在第一行绘制6*height-1星号,在第二行打印一个空格,然后使用第二行的星号对( (3 *height-3星号),(3个空格))循环三次,在第三行绘制三个空格和略微修改的星号对,然后改变方法(因为我们现在也必须考虑向上的三角形)作为中心,依此类推。它工作得很好,但长话短说,它有很多很多的循环。

今天,在课堂上讨论这个问题时,我的解决方案被接受了,但教授提到,所有这些都可以通过一个循环来完成。这让我开始思考,因为我想不出任何方法来绘制如此不规则的形状,只有一个循环。这看起来不像是通过简单地打印"*“就可以完成的,因为这里似乎没有一个坐标相等。你能帮我弄一下这个吗?真的有什么东西可以用一个循环就能画出来吗?

EN

回答 1

Stack Overflow用户

发布于 2013-11-22 08:50:20

而不是

代码语言:javascript
复制
3 times
   top row
height - 3 times
   center row
3 times
   bottom row

你可以做到

代码语言:javascript
复制
height + 3 times
  if 3 top rows
    top row
  else if 3 bottom rows
    bottom row
  else
    center row
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20134839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档