You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala中如何基于比例条件计算面包的总成本?

解决Scala中面包优惠成本计算问题

核心逻辑分析

优惠规则是每2份汤可对应1份面包享受0.5元优惠,能享受优惠的面包数量由两个值共同决定:

  • 汤的数量除以2取整数(即汤数量 // 2,代表最多能获得的优惠名额数)
  • 实际购买的面包数量

取两者中的较小值,即为可享受优惠的面包份数,剩余面包按原价计算。

举两个典型场景验证:

  • 2份汤、2份面包:优惠名额为1,总成本为 0.5 + 0.8 = 1.3(匹配示例结果)
  • 4份汤、3份面包:优惠名额为2,总成本为 2*0.5 + 0.8 = 1.8

完整代码实现

val prices: Map[String, Double] = Map(
    "Soup" -> 0.65,
    "Bread" -> 0.80,
    "Milk" -> 1.30,
    "Apples" -> 1.00
)
val itemCounts: Map[String, Int] = Map("Apples" -> 3, "Soup" -> 2, "Bread" -> 2) // 示例输入

val soupCount = itemCounts.getOrElse("Soup", 0)
val breadCount = itemCounts.getOrElse("Bread", 0)

// 计算可享受优惠的面包份数
val eligibleBreadForDiscount = Math.min(soupCount / 2, breadCount)
// 计算面包总成本:优惠部分 + 原价部分
val breadTotalCost = eligibleBreadForDiscount * 0.5 + (breadCount - eligibleBreadForDiscount) * prices("Bread")

println(breadTotalCost) // 示例输入下输出1.3

逻辑说明

  1. soupCount / 2:用整数除法计算汤能兑换的优惠面包名额,比如3份汤仅能兑换1个名额
  2. Math.min(...):限制优惠份数不超过实际购买的面包数量,避免出现优惠名额多于面包数的不合理情况
  3. 总成本拆分:优惠面包按0.5元计价,剩余面包按原价prices("Bread")计价,两者相加即为面包的最终成本

该逻辑可覆盖所有汤与面包数量组合的场景,确保优惠计算准确。

内容的提问来源于stack exchange,提问作者pragmatic learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 01:02:18