[英]Problem with finding proper regular expression in my solution from Codewars task named Mumbling
[英]Solution problem with JS task named Powers - functions and arrays
我遇到一個名為Powers的簡單任務的問題,這是條件:
數字有力量! 他們可以改變自己。 一種替代方法是替換:
每個0-與其相鄰數字的絕對差
所有其他偶數-相鄰數字最大
每個1-及其相鄰數字之和
所有其他奇數-最小的鄰數
最左邊和最右邊的數字是鄰居。 序列的K和是序列的K個轉換后的數字之和。 您的任務是找到給定序列的K-和
輸入:輸入數據作為參數給出-字符串數組。 在第一個輸入行上,數字N和K用空格分隔。 在第二個輸入行上是N號-序列。
輸出:輸出應打印在控制台上。 輸出給定序列的K -sum
示例 : 輸入 :5 1 9 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)
塊中 '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', ]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.