簡體   English   中英

名為Powers的JS任務的解決方案問題-函數和數組

[英]Solution problem with JS task named Powers - functions and arrays

我遇到一個名為Powers的簡單任務的問題,這是條件:

數字有力量! 他們可以改變自己。 一種替代方法是替換:

每個0-與其相鄰數字的絕對差

所有其他偶數-相鄰數字最大

每個1-及其相鄰數字之和

所有其他奇數-最小的鄰數

最左邊和最右邊的數字是鄰居。 序列的K和是序列的K個轉換后的數字之和。 您的任務是找到給定序列的K-

輸入:輸入數據作為參數給出-字符串數組。 在第一個輸入行上,數字NK用空格分隔。 在第二個輸入行上是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM