feat: revamp cash units screen

fix: bill math
This commit is contained in:
Sérgio Salgado 2023-05-30 13:49:11 +01:00
parent e194509d10
commit 6474017563
12 changed files with 487 additions and 309 deletions

View file

@ -56,17 +56,16 @@ const buildBillList = (units, mode) => {
units
)
const _units = _.cloneDeep(units)
const _units = _.filter(it => it.count > 0)(_.cloneDeep(units))
const bills = []
for(let i = 0; i < amountOfBills; i++) {
const idx = i % _.size(_units)
if (_units[idx].count > 0) {
bills.push(_units[idx].denomination)
_units[idx].count--
}
_units[idx].count--
if (_units[idx].count === 0) {
_units.splice(idx, 1)
}
@ -82,17 +81,16 @@ const buildBillList = (units, mode) => {
units
)
const _units = _.orderBy(['denomination'], ['asc'])(_.cloneDeep(units))
const _units = _.flow([_.filter(it => it.count > 0), _.orderBy(['denomination'], ['asc'])])(_.cloneDeep(units))
const bills = []
for(let i = 0; i < amountOfBills; i++) {
const idx = i % _.size(_units)
if (_units[idx].count > 0) {
bills.push(_units[idx].denomination)
_units[idx].count--
}
_units[idx].count--
if (_units[idx].count === 0) {
_units.splice(idx, 1)
}
@ -107,6 +105,10 @@ const buildBillList = (units, mode) => {
const getSolution = (units, amount, mode) => {
const billList = buildBillList(units, mode)
if (_.sum(billList) < amount.toNumber()) {
return []
}
const solver = sumService.subsetSum(billList, amount.toNumber())
const solution = _.countBy(Math.floor, solver.next().value)