场景
实现01的奇数矩阵实现下图规律的环绕。
代码
// 假设num都是奇数
function printMap(num){
// 圈数
let circleNum=parseInt(num/2)
let lineNum=num
var arr=[]
// 初始化多维数组
for(let t=0;t<num;t++){
arr[t]=[]
}
// 绘制圈数 循环
for(var i=1;i<=circleNum;i++){
drawCircle(num,i,arr)
}
// 中心点
var cenStr=circleNum%2==0?1:0
arr[circleNum][circleNum]=cenStr
arr.forEach(row => {
console.log(row.join(" "))
});
}
// num(几行),circleIndex(第几圈),arr 需要操作的多维数组
function drawCircle(num,circleIndex,arr){
var str=circleIndex%2==0?0:1
var optStr=str==0?1:0
// 上边
var upNum=num-circleIndex
for(let i=circleIndex-1;i<=upNum;i++){
arr[circleIndex-1][i]=str
}
// 右边
for(let i=circleIndex;i<=upNum;i++){
arr[i][num-circleIndex]=str
}
// 下边
for(let i=circleIndex-1;i<=upNum;i++){
arr[num-circleIndex][i]=str
}
// 左边
for(let i=circleIndex;i<=upNum-1;i++){
// 如果是第一个 是特别的另类字符
if(i==circleIndex){
arr[i][circleIndex-1]=optStr
}else{
// 否则 是其他的
arr[i][circleIndex-1]=str
}
}
}
printMap(5)