Swift Int массив каждые 3 элемента суммы - PullRequest
0 голосов
/ 15 апреля 2020

Например, у нас есть массив [1,2,3,4,5,6,7,8,9,10,11,12]

let index1 = 0
let index2 = 0
let index3 = 1+2+3
let index4 = 2+3+4
let index5 = 3+4+5
....

let result = [index1, index2, index3, index4, ...]

Ответы [ 4 ]

0 голосов
/ 15 апреля 2020

Вы можете перебирать индексы своей коллекции, добавлять защиту для возврата нуля, если она меньше 2, в противном случае возвращает сумму фактического значения + двух последних значений:

let numbers = [1,2,3,4,5,6,7,8,9,10,11,12]

let result = numbers.indices.map { index -> Int in
    guard index > 1 else { return 0 }
    return numbers[index-2...index].reduce(0,+)
}

result  // [0, 0, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33]

или просто

let result = numbers.indices.map { $0 < 2 ? 0 : numbers[$0-2...$0].reduce(0,+) }
0 голосов
/ 15 апреля 2020

Сначала инициализируйте список результатов

let result = [0,0]

Затем a для l oop для обхода списка и каждого l oop вы хотите сложить 3 элемента вместе и добавить к результату.

for i in 0...len(ary)-2:
  result.append(ary[i][i+1][i+2])
0 голосов
/ 15 апреля 2020

Как насчет этого?

let array: [Int] = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ]
let filterSize = 3

var movingSum = 0
var outputArray: [Int] = []

for (index, element) in array.enumerated() {

    movingSum += element

    if index >= filterSize - 1 {

        if index >= filterSize {
            movingSum -= array[index - filterSize]
        }

        outputArray.append(movingSum)

    }

}

print(outputArray)

Вывод:

[6, 9, 12, 15, 18, 21, 24, 27, 30, 33]
0 голосов
/ 15 апреля 2020

попробуйте с этим кодом

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];

let result = [0, 0];
for (var i = 2; i < arr.length; i++) {
    console.log(`index${i + 1} = ${arr[i - 2]}+${arr[i - 1]}+${arr[i]}`);

    result.push(arr[i - 2] + arr[i - 1] + arr[i]);
};

console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...