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 billsLeft = _.clone(_.fromPairs(_.map(it => [it.denomination, it.provisioned])(solution)))
|
||||
return _.reduce(
|
||||
(acc, value) => {
|
||||
const unit = units[value]
|
||||
const billsToAssign = _.clamp(0, unit.count)(_.isNaN(billsLeft[unit.denomination]) || _.isNil(billsLeft[unit.denomination]) ? 0 : billsLeft[unit.denomination])
|
||||
acc.push({ name: unit.name, denomination: unit.denomination, provisioned: billsToAssign })
|
||||
billsLeft[unit.denomination] -= billsToAssign
|
||||
return acc
|
||||
const billsToAssign = (count, left) => _.clamp(0, count)(_.isNaN(left) || _.isNil(left) ? 0 : left)
|
||||
|
||||
const billsLeft = _.flow(
|
||||
_.map(([denomination, provisioned]) => [BN(denomination), provisioned]),
|
||||
_.fromPairs,
|
||||
)(solution)
|
||||
|
||||
return _.map(
|
||||
({ count, name, denomination }) => {
|
||||
const provisioned = billsToAssign(count, billsLeft[denomination])
|
||||
billsLeft[denomination] -= provisioned
|
||||
return { name, denomination, provisioned }
|
||||
},
|
||||
[],
|
||||
_.range(0, _.size(units))
|
||||
units
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue