How to multiply every N consecutive items in a slice with Go

1 Answer

0 votes
package main

import (
    "fmt"
)

func productsNConsecutiveItems(arr []int, nConsecutiveItems int) []int {
    products := []int{}

    if nConsecutiveItems <= 0 || len(arr) < nConsecutiveItems {
        return products // empty
    }

    outSize := len(arr) - nConsecutiveItems + 1
    products = make([]int, outSize)

    for i := 0; i < outSize; i++ {
        prod := 1

        // Multiply arr[i] * arr[i+1] * ... * arr[i+nConsecutiveItems-1]
        for j := 0; j < nConsecutiveItems; j++ {
            prod *= arr[i+j]
        }

        products[i] = prod

        /*
           Example for nConsecutiveItems = 3:
           2 * 3 * 4  = 24
           3 * 4 * 5  = 60
           4 * 5 * 6  = 120
           5 * 6 * 7  = 210
           6 * 7 * 8  = 336
           7 * 8 * 9  = 504
           8 * 9 * 10 = 720
        */
    }

    return products
}

func main() {
    arr := []int{2, 3, 4, 5, 6, 7, 8, 9, 10}
    n := 3

    products := productsNConsecutiveItems(arr, n)
    fmt.Println(products)
}



/*
run:

[24 60 120 210 336 504 720]

*/

 



answered Feb 2 by avibootz

Related questions

...