所以我的一个 friend 布置了一个有趣的家庭作业。她的任务是根据用户输入创建钻石。基于 (5) 输入的样本钻石是:
************
***** *****
**** ****
*** ***
** **
*----------*
** **
*** ***
**** ****
***** *****
************
使用嵌套循环或递归并不难,随心所欲。
作为对自己的挑战,我开始用一些额外的标准来解决它:
- 只允许使用 1 个循环
- 不允许使用除输入和循环索引以外的任何变量
我已经完成了 2/3,但我知道我只是在盲目探索,我想真正了解解决方案。
有点类似于这个Diamond Pattern ,但他们的代码使用了我试图避免的所有结构。
到目前为止,我发现的最相关的信息是关于二次方程的,但要么我没有足够的数据来切实利用它们,要么我只是不够 Nerd ,无法弄明白。
这是我到目前为止的进展:
******
*****
****
***
**
*
**
***
****
*****
******
使用这段代码:
<script type="text/javascript">
for(x=1;x<=(lines*2+2)*lines*2+(lines*2+2);x++) {
if( ((x-1)%(lines*2+2)) <= Math.floor(((Math.abs(( (x-1)/(lines*2+2))%(lines*2+2) -lines)-0.51)+1)) ) {
document.write("*");
}
if((x%(lines*2+2))==0) { document.write("\n"); }
}
</script>
感谢任何帮助。谢谢!
编辑:
我错过了作业的主要部分。另一个要求是您一次只能打印出一个字符。
在可利用的行号和列号之间必须存在某种数学关系。
最佳答案
您可能需要稍微调整一下,但是使用 Array.join
可以很好地完成工作
关于javascript - 如何从一个数字生成反菱形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4883531/