方阵旋转 华为笔试题:100分 2019年5月8日星期三
输入一个N阶方阵(0<N<10),输出此方阵顺时针旋转M(0<=M<=10000)次后的方阵(数字绕中心顺时针旋转,旋转一次相当于旋转90°)
var N = readline();
// var N = 4;
var arr = [];
var line;
for(var i = 0; i < N; i++) {
// arr[i] = readline().split(" ");
line = readline().split(" ");//将读入的字符串变为数组
arr.push(line);
// arr.push([1,2,3,4]);
}
// 此时得到一个二维数组
// arr = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]];
// console.log(arr);
// console.log(arr instanceof Array);
var M = readline();
// var M = 4;
var m = M % 4; //因为四次一个循环
var newArr = [];
if(m==1) {
for(var i = 0; i < N; i++) {
newArr[i]=[]; //注意此时创建另外一个二维数组时的方法
for(var j = 0; j < N; j++) {
newArr[i][j] = arr[N - j -1][i];
}
}
}else if(m==2) {
for(var i = 0; i < N; i++) {
newArr[i]=[];
for(var j = 0; j < N; j++) {
newArr[i][j] = arr[N - i -1][N - j -1];
}
}
}else if(m==3) {
for(var i = 0; i < N; i++) {
newArr[i]=[];
for(var j = 0; j < N; j++) {
newArr[i][j] = arr[j][N - i -1];
}
}
}else{
newArr = arr;
}
// console.log(newArr);
//因为题中要求最后输出时数组间以空格形式输出
var brr = [];
for(var i =0; i < N; i++) {
brr = newArr[i].join(" ");
console.log(brr);
// print(brr);
}
// 返回指定unicode编码对应的字符(今天学习到的,与上面题无关)
document.write(String.fromCharCode(42, 42, 42, 124));// ***|