refactor: simplify solutionToOriginalUnits()

This commit is contained in:
siiky 2023-11-20 18:08:11 +00:00
parent e4aadc44c1
commit 2cb52a925d

View file

@ -123,17 +123,20 @@ const getSolution = (units, amount, mode) => {
} }
const solutionToOriginalUnits = (solution, units) => { const solutionToOriginalUnits = (solution, units) => {
const billsLeft = _.clone(_.fromPairs(_.map(it => [it.denomination, it.provisioned])(solution))) const billsToAssign = (count, left) => _.clamp(0, count)(_.isNaN(left) || _.isNil(left) ? 0 : left)
return _.reduce(
(acc, value) => { const billsLeft = _.flow(
const unit = units[value] _.map(([denomination, provisioned]) => [BN(denomination), provisioned]),
const billsToAssign = _.clamp(0, unit.count)(_.isNaN(billsLeft[unit.denomination]) || _.isNil(billsLeft[unit.denomination]) ? 0 : billsLeft[unit.denomination]) _.fromPairs,
acc.push({ name: unit.name, denomination: unit.denomination, provisioned: billsToAssign }) )(solution)
billsLeft[unit.denomination] -= billsToAssign
return acc return _.map(
({ count, name, denomination }) => {
const provisioned = billsToAssign(count, billsLeft[denomination])
billsLeft[denomination] -= provisioned
return { name, denomination, provisioned }
}, },
[], units
_.range(0, _.size(units))
) )
} }