Skip to main content
paolad5416
New Participant
Jul 26, 2024 3:10 AM UTC
Question

help to create rule to calculate data based on the previous iteration

I have this array {100, 50, 20,50,10} and a variable x = 600, I need help to create a rule that creates an array with the results that must be calculated in this way:

The first value of the array must be subtracted with the variable x, the result must be subtracted with the second value of the array, the previous result must be subtracted with the third position and so on. The results must be stored in an array.

At the moment I have this code but it does not work correctly


a!localVariables(
local!regularizaciones: {100, 50, 20,50,10},
local!initialValue: 600,


local!resultArray: {local!initialValue},

a!forEach(
items: a!forEach(
items: local!array,
expression: fv!item
),
expression: a!localVariables(
local!currentValue: fv!item,
local!lastResult: index(local!resultArray, length(local!resultArray)),
local!newResult: local!lastResult - local!currentValue,
local!resultArray: append(local!resultArray, local!newResult)
)
),


local!resultArray

)

I appreciate any help


3 replies

Brainy
Jul 26, 2024 4:45 AM UTC

You can use the reduce function. See the following sample code:

a!localVariables(
  local!regularizaciones: { 100, 50, 20, 50, 10 },
  local!initialValue: 600,
  reduce(
    fn!sum,
    local!regularizaciones[1] - local!initialValue,
    ldrop(local!regularizaciones, 1) * ( - 1)
  )
)

venkatrea696188
Inspiring
Jul 26, 2024 5:21 AM UTC

Hello, You should mention sample output (It would help us a lot) .have a look into the code the output of this code looks like {500,450,430,380,370}

a!localVariables(
  local!regularizaciones: {100, 50, 20,50,10},
  local!initialValue: 600,
a!forEach(
  items: local!regularizaciones,
  expression: a!localVariables(
    local!subtractedarray:if(
      fv!index=1,
      local!initialValue-fv!item,
      local!initialValue-sum(index(local!regularizaciones,(enumerate(fv!index)+1),null))
    ),
    {local!subtractedarray}
  )
)

)

gayathris111098
Inspiring
Jul 30, 2024 5:20 AM UTC

a!localVariables(
local!regularizaciones: { 100, 50, 20, 50, 10 },
local!initialValue: 600,
/* Define the reduce function */
local!resultArray: reduce(
rule!subtractionAccumulator,
{ local!initialValue },
local!regularizaciones,

),
local!resultArray
)

/* Helper function to accumulate subtraction results */
rule!subtractionAccumulator

ri!lastResult - ri!currentValue