javascript - 如何从一个数字生成反菱形?

标签 javascript math

所以我的一个 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 可以很好地完成工作

http://jsfiddle.net/8H27C/

关于javascript - 如何从一个数字生成反菱形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4883531/

相关文章:

C 努力将无符号整数打包到 uint64_t 中

javascript - 在 JavaScript 中终止外部映射函数

php - 从 javascript 生成的外部网站中提取内容

javascript - 通过自定义 Cordova 方案获得安全来源

oop - OOP 是否基于任何数学分支?

C# - 数学公式帮助 - 作业

javascript - 我怎样才能暂停 JavaScript 直到输入,比如确认/警告框?

javascript - 如何有条件地应用 Angular 状态提供者

matlab - 如何在 MATLAB 中使用 fzero() 求解多项式方程?

java - 生成一个接近中心的值较小的矩阵