refactor: simplify solutionToOriginalUnits()
This commit is contained in:
parent
e4aadc44c1
commit
2cb52a925d
1 changed files with 13 additions and 10 deletions
|
|
@ -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))
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue