总和。 [打字稿:NodeJs]"/>
用数字顺时针计数时获取任意大小螺旋的角总和。 [打字稿:NodeJs]
我厌倦了解决这个编码练习,但没有得到预期的输出:
给定一个数字螺旋的大小,你可以顺时针数数。 3x3 是 3 列乘 3 行。
2x2 3x3 4x4
--- ----- -----------
1 2 7 8 9 7 8 9 10
4 3 6 1 2 6 1 2 11
5 4 3 5 4 3 12
16 15 14 13
输入给你螺旋的大小——它总是一个整数,值等于或大于 2。
目标是对螺旋的角求和。如果你看一下 3x3 网格,角上的数字是 3、5、7、9。如果你把这些加在一起,你会得到 24,这就是答案。
完成函数,返回任意大小螺旋的角点总和。 例子 输入 - 3
输出 - 24
这是练习的代码:
// ----- 请完成以下功能来解决问题 -----
function sumSpiral(size: number): number {
return 0
}
// ----- 不要在这一行下面编辑 -----
const fs = require('fs');
const input = parseInt(fs.readFileSync(0, 'utf-8'), 10);
console.log(sumSpiral(input))
回答如下:
角必须包含
size * size
,然后是size * size - (size - 1)
,然后是(size * size - (size - 1)) - (size - 1)
,和(size * size - (size - 1) - (size - 1)) - (size - 1)
,所以汇总值应该是size * size * 4 - 6 * size + 6
.
function sumSpiral(size: number): number {
// size * size + (size * size - (size - 1)) + (size * size - 2 * (size - 1)) + (size * size - 3 * (size - 1));
return size * size * 4 - 6 * size + 6;
}
有个例子:
const num2 = [
[1, 2],
[4, 3],
];
const num3 = [
[7, 8, 9],
[6, 1, 2],
[5, 4, 3],
];
const num4 = [
[7, 8, 9, 10],
[6, 1, 2, 11],
[5, 4, 3, 12],
[16, 15, 14, 13],
];
const num5 = [
[21, 22, 23, 24, 25],
[20, 7, 8, 9, 10],
[19, 6, 1, 2, 11],
[18, 5, 4, 3, 12],
[17, 16, 15, 14, 13],
];
const num6 = [
[21, 22, 23, 24, 25, 26],
[20, 7, 8, 9, 10, 27],
[19, 6, 1, 2, 11, 28],
[18, 5, 4, 3, 12, 29],
[17, 16, 15, 14, 13, 30],
[36, 35, 34, 33, 32, 31],
];
function sumArrayCorner(arr) {
const max = arr.length - 1;
const a = arr[0][0];
const b = arr[0][max];
const c = arr[max][0];
const d = arr[max][max];
console.log(a + b + c + d);
return a + b + c + d;
}
function sumSpiral(size) {
// size * size + (size * size - (size - 1)) + (size * size - 2 * (size - 1)) + (size * size - 3 * (size - 1));
console.log(size * size * 4 - 6 * size + 6);
return size * size * 4 - 6 * size + 6;
}
sumArrayCorner(num2);
sumSpiral(2);
sumArrayCorner(num3);
sumSpiral(3);
sumArrayCorner(num4);
sumSpiral(4);
sumArrayCorner(num5);
sumSpiral(5);
sumArrayCorner(num6);
sumSpiral(6);
更多推荐
用数字顺时针计数时获取任意大小螺旋的角总和。 [打字稿:NodeJs]
发布评论