最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

用数字顺时针计数时获取任意大小螺旋的角总和。 [打字稿:NodeJs]

网站源码admin52浏览0评论

用数字顺时针计数时获取任意大小螺旋的角总和。 [打字稿: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);
发布评论

评论列表(0)

  1. 暂无评论