最近我一直在研究一个问题,即程序是“绘制”(使用ASCII空格和星号)三个向下指向和两个向上指向的三角形,变量height
根据用户的方式改变它们的高度希望它们形成以下形状:
*****************************
******* ******* *******
***** ***** *****
*** * *** * ***
* *** * *** *
***** *****
******* *******
*******************
(when user selects the height variable = 5)
和
*****************************************
*********** *********** ***********
********* ********* *********
******* * ******* * *******
***** *** ***** *** *****
*** ***** *** ***** ***
* ******* * ******* *
********* *********
*********** ***********
****************************
(when user selects the height variable = 7)
等等。
我确实解决了这个问题,因为蛮力方法非常简单,但我意识到它的优化程度有多差。我所做的是将它分成三个部分:三个第一行,中心和最后三行。然后,我们在第一行中绘制6 * height
- 1个星号,我们在第二行中打印一个空格,然后使用这些对循环三次((3 * height
- 3个星号),(在第二行中有3个空格)),在第三行中有三个空格和略微修改过的对,然后是一个改变的方法(因为我们现在也必须考虑向上三角形)中心等等。它运作良好,但它有很多很多循环,可以缩短一个长篇故事。
今天,在课堂上讨论问题时,我的解决方案被接受了,但是教授提到所有这些都可以通过一个循环完成。它只是让我思考,因为我无法想到任何方法会绘制这样一个不规则的形状,只有一个循环。当一些坐标相等被满足时,通过简单地打印“*”看起来不是这样的,因为这里似乎没有。你能帮帮我吗?是否真的可以用一个循环绘制它?
答案 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