2

假设出租车的前五分之一英里收费 3.10 美元。然后每增加五分之一英里收费半美元。对于每分钟的等待或延迟,它收取半美元。但是,在出租车的速度低于盈亏平衡点的情况下,将收取此延误费,而不是每分钟的里程费。盈亏平衡点是在一分钟内行驶五分之一英里的速度。我们假设出租车以恒定速度行驶。我正在尝试编写一个算法或函数,以获取出租车行驶的总距离和总时间并输出票价。但是,我很难将延迟费用考虑在内。

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

4

3 回答 3

3

当只给出 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 mile 和 total_time = 3 min,但票价却不同。

于 2013-08-17T03:53:49.767 回答
0

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

交互式示例

常数:

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;
}
于 2013-08-17T03:31:17.277 回答
0

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

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

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

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

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

此行程的标称时间为 50 分钟 (10 / (1/5)),因此有 10m 的延迟,已添加到费用中。

cost = $3.10 + (10mi - 1/5mi) * $0.50 + (10m * $0.50) = $13
于 2013-08-17T03:49:22.987 回答