关于计算出租车费用的算法/功能

时间:2013-08-17 03:08:19

标签: algorithm math pseudo-class computation

假设一辆出租车在前五分之一英里收费3.10美元。然后,每增加五分之一英里就收取半美元。对于等待或延迟的每一分钟,它收取半美元。然而,应用该延迟费用而不是每分钟的里程费用,在此期间出租车的速度慢于brea-even点。盈亏平衡点是在一分钟内驱动五分之一英里的速度。我们假设出租车以恒定速度行驶。 我正在尝试编写一个算法或函数来计算出租车行驶的总距离和总时间并输出票价。但是,我很难分解延迟费用。

因此,如果出租车以恒定速度行驶,那么理想情况下,它将在给定时间内行驶x英里(恒定速度*时间间隔)。 如果我们从这个值中减去实际行驶的里程数,我们就会得到可能已经行驶但却没有行驶的“浪费”里程数。 然后我失去了思路,我不知道从那里去哪里。任何帮助/提示将不胜感激。

3 个答案:

答案 0 :(得分:3)

仅给出total_time和total_distance时,此问题没有单一输出。我会 显示两个实例,导致相同的total_time和total_distance但总票价不同。

Instance 1: 
1st min: travels 0.4 mile; fare = 3.1+0.5 = 3.6
2nd min: waits at signal; fare = 0.5 for waiting a min at speed less than break even point
3rd min: travels 0.8 mile; fare = 0.5*4 = 2
total_fare = 3.6 + 0.5 + 2 = 6.1

Instance 2: 
1st min: travels 0.4 mile; fare = 3.1+0.5 = 3.6
3rd min: travels 0.4 mile; fare = 0.5*2 = 1
3rd min: travels 0.4 mile; fare = 0.5*2 = 1
total_fare = 3.6 + 1 + 1 = 5.6

然而,在两种情况下,total_distance = 1.2英里和total_time = 3分钟,但票价不同。

答案 1 :(得分:0)

如果我理解正确,这应该有效。如果这不正确,请提供示例输入和输出,以便我知道我何时做对。示例代码使用JavaScript。

interactive example

常量:

var baseRate = 3.10;
var mileRate = 0.50;
var minuteRate = 0.50;


function fare(miles, minutes) {
    var n = baseRate, mode;

在五分之一英里之内,所以基本费率

    if (miles <= 1/5) {
        n = baseRate;
    }

每英里费用会添加到基本费率中。我们先减去1/5英里。

    else if (miles < minutes / 5) {
        miles -= 1/5;
        n += mileRate * miles;
    }

我们的速度低于每分钟五分之一英里,所以每分钟收费一次。

    else {
        n += minutes * minuteRate;
    }
    return n;
}

答案 2 :(得分:0)

如果您在行程的最后计算费用,那么您只需要根据收支平衡规则计算总体速度和标称时间。

对于一种情况,假设行程耗时30分钟,行驶10英里。

t = 30m
d = 10mi
s = 10/30 = 1/3 mi/m which is > (1/5 mi/m)

没有延误,因此费用以里程为基础。

cost = $3.10 + (10mi - 1/5mi) * $0.50 = $8.00

对于另一种情况,假设行程需要60分钟,行驶10英里。

t = 60m
d = 10mi
s = 10/60 = 1/6 mi/m which is < (1/5 mi/m)

此行程的标称时间为50分钟(10 /(1/5)),因此延迟时间为10米。

cost = $3.10 + (10mi - 1/5mi) * $0.50 + (10m * $0.50) = $13