gpt4 book ai didi

javascript - 如何将 ascii 正方形螺旋打印到控制台

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:17:27 25 4
gpt4 key购买 nike

这是一道我想不通的面试题..

将以下输出打印到 JavaScript 控制台(或您使用的任何控制台)

我试图解决这个问题是建立一个星星阵列和一个空间阵列。

然后通过添加星号或将星号更改为空格来逐行打印。

但这并不能构建整个螺旋。它只构建了上半部分,所以我想知道是否有更优雅的解决方案?

感觉某种递归函数对这个有好处吗?

var starLine = [];
var spaceLine = [];
for (var i = 0; i < 33; i++) {
starLine.push('*');
spaceLine.push(' ');
}

console.log(starLine.join(' '));
for (var i = 1; i <= 32/2; i+=2) {
spaceLine[(i-1)] = '*';
spaceLine[32-(i-1)] = '*';
starLine[i] = ' ';
starLine[32-(i)] = ' ';
console.log(spaceLine.join(' '));
console.log(starLine.join(' '));
}

编辑:我对递归解决方案的尝试。我已经很接近了,但它仍然有点老套: https://jsfiddle.net/6fa9uty3/

    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *      
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

(图片以防文本无法正确呈现) square spiral

最佳答案

解决方案:https://jsfiddle.net/oc5b5qzh/ - 在浏览器中查看控制台窗口以查看螺旋。

保持尺寸奇数。我对每种情况使用了不同的字母而不是 *,这样您就可以看到循环的哪一部分解决了这种情况。显然可以压缩得更多,但这只会降低它的可读性。

注意:与您所拥有的不完全匹配。我认为我的方向是相反的。

var size = 21;

for (var h = 0; h < size; h++) {
var line = "";
for (var w = 0; w < size; w++) {
if (h < size/2) {
if (h % 2 === 0) {
if (w >= h && w < size - h) {
line += "A";
}
else {
line += (w % 2 === 0) ? "B" : " ";
}
}
else {
if (w >= h && w < size - h) {
line += " ";
}
else {
line += (w % 2 === 0) ? "C" : " ";
}
}
}
else {
if (h % 2 === 0) {
if (w < h - 1 && w >= size - h) {
line += "D";
}
else {
line += (w % 2 === 0) ? "E" : " ";
}
}
else {
if (w < h - 1 && w >= size - h) {
line += " ";
}
else {
line += (w % 2 === 0) ? "F" : " ";
}
}
}
}
console.log(line);
}

关于javascript - 如何将 ascii 正方形螺旋打印到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31973788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com