Intermediate Level

HI

I am trying examples on this platform

But i dont understand the solution of this problem. I know how concat, map and reduce methods work but still i dont understand the logic of the solution. How can i improve the understanding to next level?

practice doing algorithms

break down that line

etc

many things you can do

const powerset = arr => arr.reduce((a, v) => a.concat(a.map(r => [v].concat(r))), [[]]);

to start I would break this donw in loggable steps
so

function powerset (arr) {
  return arr.reduce((a, v) => a.concat(a.map(r => [v].concat(r))), [[]]);
}

and then again

function reduceCallback(a, v) {
  return a.concat(a.map(r => [v].concat(r)))
}
function powerset (arr) {
  return arr.reduce(reduceCallback, [[]]);
}

and again

function reduceCallback(a, v) {
  function mapCallback(r) {
    return [v].concat(r)
  }
  return a.concat(a.map(mapCallback))
}

function powerset(arr) {
  return arr.reduce(reduceCallback, [
    []
  ]);
}
1 Like