gpt4 book ai didi

javascript - 名为 Powers 的 JS 任务的解决方案 - 函数和数组

转载 作者:行者123 更新时间:2023-12-03 00:38:53 24 4
gpt4 key购买 nike

我在执行名为Powers的简单任务时遇到问题,条件如下:

数字有力量!他们可以改变自己。一种转换是通过替换来完成的:

每个 0 - 与其相邻数字的绝对差

所有其他偶数 - 及其相邻数字的最大值

每个 1 - 及其相邻数字的总和

所有其他奇数 - 及其相邻数字的最小值

最左边和最右边的数字是邻居。序列的K和是序列经过K次变换后的数字之和。你的任务是找到给定序列的K总和

输入:输入数据作为参数给出 - 字符串数组。在第一个输入行上,将有数字 NK,并用空格分隔。第二个输入行是 N 数字 - 序列。

输出:输出应该打印在控制台上。输出给定序列的K总和

示例:输入:5 19 0 2 4 1

解释:9 0 2 4 1 变为 0 7 4 2 13

输出:26(0 7 4 2 13 的总和)

**这是我的代码:**

'use strict';    
function slove(args) {
let k = Number(args[0].split(' ')[1]);
let numbers = args[1].split(' ').map(Number);

function transform(num, left, right) {
if (num === 0) {
return Math.abs(left - right);
} else if (num % 2 === 0) {
return Math.max(left, right);
} else if (num === 1) {
return left + right;
} else {
return Math.min(left, right);
}
}

for (let i = 0; i < k; i++) {
let currentTransformation = [];
for (let j = 0; j < numbers.lenght; j++) {
let nextValue;

if (j === 0) {
nextValue = transform(numbers[j], numbers[numbers.lenght - 1], numbers[1]);
} else if (j === numbers.lenght - 1) {
transform(numbers[j], numbers[j - 1], numbers[0]);
} else {
nextValue = transform(numbers[j], numbers[j - 1], numbers[j + 1]);

}

currentTransformation[j] = nextValue;

}
numbers = currentTransformation;
}

let sum = 0;
for (let num of numbers) {
sum += num;
}
console.log(sum);
}

slove([
'5 1',
'9 0 2 4 1'
]);

所以console.log(sum)需要返回26,但它返回0...我找不到我的代码问题出在哪里。

最佳答案

您的代码有 2 个问题:

  • 您的数组长度有一个拼写错误 - 它是length,而不是lenght
  • 您忘记保存 if (j ===numbers.length - 1) block 中的最后一个值

'use strict';

function solve(args) {
let k = Number(args[0].split(' ')[1]);
let numbers = args[1].split(' ').map(Number);

function transform(num, left, right) {
if (num === 0) {
return Math.abs(left - right);
} else if (num % 2 === 0) {
return Math.max(left, right);
} else if (num === 1) {
return left + right;
} else {
return Math.min(left, right);
}
}

for (let i = 0; i < k; i++) {
let currentTransformation = [];
for (let j = 0; j < numbers.length; j++) {
let nextValue;

if (j === 0) {
nextValue = transform(numbers[j], numbers[numbers.length - 1], numbers[1]);
} else if (j === numbers.length - 1) {
nextValue = transform(numbers[j], numbers[j - 1], numbers[0]); // HERE
} else {
nextValue = transform(numbers[j], numbers[j - 1], numbers[j + 1]);
}

currentTransformation[j] = nextValue;
}

numbers = currentTransformation;
}

let sum = 0;
for (let num of numbers) {
sum += num;
}
console.log(sum);
}

solve([
'5 1',
'9 0 2 4 1',
]);

关于javascript - 名为 Powers 的 JS 任务的解决方案 - 函数和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53544415/

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