收银系统算法挑战

挑战:

参考:收银系统算法挑战

设计一个收银程序 checkCashRegister() ,其把购买价格(price)作为第一个参数 , 付款金额 (cash)作为第二个参数, 和收银机中零钱 (cid) 作为第三个参数.

cid 是一个二维数组,存着当前可用的找零.

当收银机中的钱不够找零时返回字符串 “Insufficient Funds”. 如果正好则返回字符串 “Closed”.

否者, 返回应找回的零钱列表,且由大到小存在二维数组中.

例如:

checkCashRegister(19.50, 20.00,
[[“PENNY”, 1.01], [“NICKEL”, 2.05], [“DIME”, 3.10],
[“QUARTER”, 4.25], [“ONE”, 90.00], [“FIVE”, 55.00],
[“TEN”, 20.00], [“TWENTY”, 60.00], [“ONE HUNDRED”, 100.00]])
应该返回一个数组.

checkCashRegister(19.50, 20.00,
[[“PENNY”, 0.01], [“NICKEL”, 0], [“DIME”, 0],
[“QUARTER”, 0], [“ONE”, 0], [“FIVE”, 0],
[“TEN”, 0], [“TWENTY”, 0], [“ONE HUNDRED”, 0]])
应该返回一个字符串.

checkCashRegister(19.50, 20.00,
[[“PENNY”, 0.50], [“NICKEL”, 0], [“DIME”, 0],
[“QUARTER”, 0], [“ONE”, 0], [“FIVE”, 0],
[“TEN”, 0], [“TWENTY”, 0], [“ONE HUNDRED”, 0]])
应该返回一个字符串.

checkCashRegister(19.50, 20.00,
[[“PENNY”, 1.01], [“NICKEL”, 2.05], [“DIME”, 3.10],
[“QUARTER”, 4.25], [“ONE”, 90.00], [“FIVE”, 55.00],
[“TEN”, 20.00], [“TWENTY”, 60.00], [“ONE HUNDRED”, 100.00]])
应该返回 [[“QUARTER”, 0.50]].

checkCashRegister(3.26, 100.00,
[[“PENNY”, 1.01], [“NICKEL”, 2.05], [“DIME”, 3.10],
[“QUARTER”, 4.25], [“ONE”, 90.00], [“FIVE”, 55.00],
[“TEN”, 20.00], [“TWENTY”, 60.00], [“ONE HUNDRED”, 100.00]])
应该返回 [[“TWENTY”, 60.00], [“TEN”, 20.00], [“FIVE”, 15], [“ONE”, 1], [“QUARTER”, 0.50], [“DIME”, 0.20], [“PENNY”, 0.04]].

checkCashRegister(19.50, 20.00,
[[“PENNY”, 0.01], [“NICKEL”, 0], [“DIME”, 0],
[“QUARTER”, 0], [“ONE”, 0], [“FIVE”, 0],
[“TEN”, 0], [“TWENTY”, 0], [“ONE HUNDRED”, 0]])
应该返回 “Insufficient Funds”.

checkCashRegister(19.50, 20.00,
[[“PENNY”, 0.01], [“NICKEL”, 0], [“DIME”, 0],
[“QUARTER”, 0], [“ONE”, 1.00], [“FIVE”, 0],
[“TEN”, 0], [“TWENTY”, 0], [“ONE HUNDRED”, 0]])
应该返回 “Insufficient Funds”.

checkCashRegister(19.50, 20.00,
[[“PENNY”, 0.50], [“NICKEL”, 0], [“DIME”, 0],
[“QUARTER”, 0], [“ONE”, 0], [“FIVE”, 0],
[“TEN”, 0], [“TWENTY”, 0], [“ONE HUNDRED”, 0]])
应该返回 “Closed”.

答案:

方法 描述
forEach() 数组每个元素都执行一次回调函数。
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
round() 把数四舍五入为最接近的整数。
parseInt() 解析一个字符串并返回一个整数。
function checkCashRegister(price, cash, cid) {
   
  var change = cash - price,
      totalCash = 0,
      rArr = [];
  // Here is your change, ma'am.
  cid.forEach(function (arr) {
   
      totalCash += arr[1];
  });
  if (change > totalCash) {
   
      return 'Insufficient Funds';
  } else if (change == totalCash
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值