求一个分时段计费的算法啊,chatgpt都被问傻了也给不了正确的答案

864328615

问题描述

我有一个分时段计费的场景,比如时段为

$rates = [
    {
        "start" => "00:00",
        "end" => "12:00",
        "rate" => 3
    },
    {
        "start" => "12:00",//开始时间
        "end" => "24:00", //结束时间
        "rate" => 4 //分钟单价
    }
]

这个时段也可能跨天类似下面的

$rates = [
    {
        "start" => "12:00",
        "end" => "02:00",
        "rate" => 3
    },
    {
        "start" => "02:00",//开始时间
        "end" => "12:00", //结束时间
        "rate" => 4 //分钟单价
    }
]

我想实现一个方法

public static function calculateCost($start, $end, $rates){
    //这里就是算法了
}

我传入开始时间,结束时间,根分时段价格的数组,这个方法可以告诉我费用,开始时间根结束时间要考虑跨天的情况,比如23:30-03:10这种消费的情况,大哥们有做过类似的吗,chatgpt太笨了,总是忽悠我。。。。。

418 3 3
3个回答

xiasha11

量贩式KTV的计费算法,使用笨方法的会会很烦,需要取巧

  • 暂无评论
释永战

这个简单,根据设置的数据把每一分钟或者每个小时都设置一个金额存储,然后根据当前小时计算价格

  • 暂无评论
gddd


你的$rates这是个什么类型????

一天1440分钟,每个分钟对应一个rate价格刻度,这就是一个数组$calculate 例如 [3,3,3,3,3,4,4,4,4,4,3,3,3]一共有1440个键
键的值就是rate分钟单价,$rate还里面还可以设置更多数组分更多时间段,只要是24个小时就行
foreach $calculate 在里面取值,然后相加,最后就得到了总的消费金额
以下是具体实现
23:30时间对应的键就是1410。03:10对应190,end小于start说明跨天了,那就取1-190键的值之和,1410-1440 值之和,相加就是最终消费金额

大致逻辑 仅供参考
我实在太无聊了,坐等魔兽国服

  • 864328615 2023-10-14

    大佬请收下我的膝盖,太牛逼了,这玩意就像一个复杂的逻辑被展开了,用简单的方式解决复杂的算法

  • 864328615 2023-10-14

    我看看我能举一反二不,现在是开始时间结束时间固定了,其实我的业务还有个更恶心的金额固定,就是我就100元,我能玩多久,变态的玩意

  • 864328615 2023-10-14

    我靠一样的 我去加就行了 加购100 时间截止 我草,大佬再让我膜拜下 你这思想太牛逼了

🔝