2018-10-10 18:03:03 -04:00
|
|
|
---
|
|
|
|
id: aa2e6f85cab2ab736c9a9b24
|
2020-12-16 00:37:30 -07:00
|
|
|
title: 收银机
|
2018-10-10 18:03:03 -04:00
|
|
|
challengeType: 5
|
2020-09-07 16:17:22 +08:00
|
|
|
forumTopicId: 16012
|
2018-10-10 18:03:03 -04:00
|
|
|
---
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
# --description--
|
2018-10-10 18:03:03 -04:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
编写一个用于收银机的函数`checkCashRegister()`,传入售价为第一个参数(`price`)、支付金额为第二个参数(`cash`)、收银机內的金额为第三个参数(`cid`)。
|
|
|
|
|
|
|
|
`cid`是包含货币面值的二维数组。
|
|
|
|
|
|
|
|
函数`checkCashRegister()`必须返回含有`status`键值和`change`键值的对象。
|
|
|
|
|
|
|
|
如果收银机內的金额少于应找回的零钱数,或者你无法返回确切的数目时,返回`{status: "INSUFFICIENT_FUNDS", change: []}`。
|
|
|
|
|
|
|
|
如果收银机內的金额等于应找回的零钱数,返回`{status: "CLOSED", change: [...]}`,其中`change`键值是收银机內的金额。
|
|
|
|
|
|
|
|
否则,返回`{status: "OPEN", change: [...]}`,其中`change`键值是应找回的零钱数,并且它的面值由高到低排序。
|
|
|
|
|
|
|
|
<table class='table table-striped'><tbody><tr><th>货币单位</th><th>面值</th></tr><tr><td>Penny</td><td>$0.01 (PENNY)</td></tr><tr><td>Nickel</td><td>$0.05 (NICKEL)</td></tr><tr><td>Dime</td><td>$0.1 (DIME)</td></tr><tr><td>Quarter</td><td>$0.25 (QUARTER)</td></tr><tr><td>Dollar</td><td>$1 (DOLLAR)</td></tr><tr><td>Five Dollars</td><td>$5 (FIVE)</td></tr><tr><td>Ten Dollars</td><td>$10 (TEN)</td></tr><tr><td>Twenty Dollars</td><td>$20 (TWENTY)</td></tr><tr><td>One-hundred Dollars</td><td>$100 (ONE HUNDRED)</td></tr></tbody></table>
|
|
|
|
|
|
|
|
# --hints--
|
2018-10-10 18:03:03 -04:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
`checkCashRegister(19.5, 20, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.1], ['QUARTER', 4.25], ['ONE', 90], ['FIVE', 55], ['TEN', 20], ['TWENTY', 60], ['ONE HUNDRED', 100]])`应该返回一个对象。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
```js
|
|
|
|
assert.deepEqual(
|
|
|
|
Object.prototype.toString.call(
|
|
|
|
checkCashRegister(19.5, 20, [
|
|
|
|
['PENNY', 1.01],
|
|
|
|
['NICKEL', 2.05],
|
|
|
|
['DIME', 3.1],
|
|
|
|
['QUARTER', 4.25],
|
|
|
|
['ONE', 90],
|
|
|
|
['FIVE', 55],
|
|
|
|
['TEN', 20],
|
|
|
|
['TWENTY', 60],
|
|
|
|
['ONE HUNDRED', 100]
|
|
|
|
])
|
|
|
|
),
|
|
|
|
'[object Object]'
|
|
|
|
);
|
|
|
|
```
|
2018-10-10 18:03:03 -04:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
`checkCashRegister(19.5, 20, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]])`应该返回`{status: "OPEN", change: [["QUARTER", 0.5]]}`。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
|
|
```js
|
2020-12-16 00:37:30 -07:00
|
|
|
assert.deepEqual(
|
|
|
|
checkCashRegister(19.5, 20, [
|
|
|
|
['PENNY', 1.01],
|
|
|
|
['NICKEL', 2.05],
|
|
|
|
['DIME', 3.1],
|
|
|
|
['QUARTER', 4.25],
|
|
|
|
['ONE', 90],
|
|
|
|
['FIVE', 55],
|
|
|
|
['TEN', 20],
|
|
|
|
['TWENTY', 60],
|
|
|
|
['ONE HUNDRED', 100]
|
|
|
|
]),
|
|
|
|
{ status: 'OPEN', change: [['QUARTER', 0.5]] }
|
|
|
|
);
|
2018-10-10 18:03:03 -04:00
|
|
|
```
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
`checkCashRegister(3.26, 100, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]])`应该返回`{status: "OPEN", change: [["TWENTY", 60], ["TEN", 20], ["FIVE", 15], ["ONE", 1], ["QUARTER", 0.5], ["DIME", 0.2], ["PENNY", 0.04]]}`。
|
|
|
|
|
|
|
|
```js
|
|
|
|
assert.deepEqual(
|
|
|
|
checkCashRegister(3.26, 100, [
|
|
|
|
['PENNY', 1.01],
|
|
|
|
['NICKEL', 2.05],
|
|
|
|
['DIME', 3.1],
|
|
|
|
['QUARTER', 4.25],
|
|
|
|
['ONE', 90],
|
|
|
|
['FIVE', 55],
|
|
|
|
['TEN', 20],
|
|
|
|
['TWENTY', 60],
|
|
|
|
['ONE HUNDRED', 100]
|
|
|
|
]),
|
|
|
|
{
|
|
|
|
status: 'OPEN',
|
|
|
|
change: [
|
|
|
|
['TWENTY', 60],
|
|
|
|
['TEN', 20],
|
|
|
|
['FIVE', 15],
|
|
|
|
['ONE', 1],
|
|
|
|
['QUARTER', 0.5],
|
|
|
|
['DIME', 0.2],
|
|
|
|
['PENNY', 0.04]
|
|
|
|
]
|
|
|
|
}
|
|
|
|
);
|
|
|
|
```
|
2018-10-10 18:03:03 -04:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
`checkCashRegister(19.5, 20, [["PENNY", 0.01], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]])`应该返回`{status: "INSUFFICIENT_FUNDS", change: []}`。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
```js
|
|
|
|
assert.deepEqual(
|
|
|
|
checkCashRegister(19.5, 20, [
|
|
|
|
['PENNY', 0.01],
|
|
|
|
['NICKEL', 0],
|
|
|
|
['DIME', 0],
|
|
|
|
['QUARTER', 0],
|
|
|
|
['ONE', 0],
|
|
|
|
['FIVE', 0],
|
|
|
|
['TEN', 0],
|
|
|
|
['TWENTY', 0],
|
|
|
|
['ONE HUNDRED', 0]
|
|
|
|
]),
|
|
|
|
{ status: 'INSUFFICIENT_FUNDS', change: [] }
|
|
|
|
);
|
|
|
|
```
|
2018-10-10 18:03:03 -04:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
`checkCashRegister(19.5, 20, [["PENNY", 0.01], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 1], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]])`应该返回`{status: "INSUFFICIENT_FUNDS", change: []}`。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
```js
|
|
|
|
assert.deepEqual(
|
|
|
|
checkCashRegister(19.5, 20, [
|
|
|
|
['PENNY', 0.01],
|
|
|
|
['NICKEL', 0],
|
|
|
|
['DIME', 0],
|
|
|
|
['QUARTER', 0],
|
|
|
|
['ONE', 1],
|
|
|
|
['FIVE', 0],
|
|
|
|
['TEN', 0],
|
|
|
|
['TWENTY', 0],
|
|
|
|
['ONE HUNDRED', 0]
|
|
|
|
]),
|
|
|
|
{ status: 'INSUFFICIENT_FUNDS', change: [] }
|
|
|
|
);
|
|
|
|
```
|
2018-10-10 18:03:03 -04:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
`checkCashRegister(19.5, 20, [["PENNY", 0.5], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]])`应该返回`{status: "CLOSED", change: [["PENNY", 0.5], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]]}`。
|
2020-09-07 16:17:22 +08:00
|
|
|
|
2018-10-10 18:03:03 -04:00
|
|
|
```js
|
2020-12-16 00:37:30 -07:00
|
|
|
assert.deepEqual(
|
|
|
|
checkCashRegister(19.5, 20, [
|
|
|
|
['PENNY', 0.5],
|
|
|
|
['NICKEL', 0],
|
|
|
|
['DIME', 0],
|
|
|
|
['QUARTER', 0],
|
|
|
|
['ONE', 0],
|
|
|
|
['FIVE', 0],
|
|
|
|
['TEN', 0],
|
|
|
|
['TWENTY', 0],
|
|
|
|
['ONE HUNDRED', 0]
|
|
|
|
]),
|
|
|
|
{
|
|
|
|
status: 'CLOSED',
|
|
|
|
change: [
|
|
|
|
['PENNY', 0.5],
|
|
|
|
['NICKEL', 0],
|
|
|
|
['DIME', 0],
|
|
|
|
['QUARTER', 0],
|
|
|
|
['ONE', 0],
|
|
|
|
['FIVE', 0],
|
|
|
|
['TEN', 0],
|
|
|
|
['TWENTY', 0],
|
|
|
|
['ONE HUNDRED', 0]
|
|
|
|
]
|
|
|
|
}
|
|
|
|
);
|
2018-10-10 18:03:03 -04:00
|
|
|
```
|
2020-08-13 17:24:35 +02:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
# --solutions--
|
|
|
|
|