【问题标题】:Algorithm/Function about computing taxi fare [closed]关于计算出租车费的算法/函数[关闭]
【发布时间】:2013-08-19 12:49:37
【问题描述】:

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

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

【问题讨论】:

  • 在每分钟结束时,计算行驶了多少英里。如果不到五分之一英里,收取半美元;否则按里程收费。
  • 您只会得到总时间和总距离,而不是一分钟一分钟的报告。

标签: algorithm math pseudo-class computation


【解决方案1】:

当只给出 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 分钟,但票价却不同。

【讨论】:

  • 问题描述确实说“我们假设出租车以恒定速度行驶。”您的出租车表现得像一辆真正的出租车,由于交通信号等原因而停止,所以它不是以恒定速度行驶。
  • @PatriciaShanahan,问题描述还说,“对于每一分钟的等待或延迟”,这与“我们假设出租车以恒定速度行驶”相矛盾,如果出租车怎么能等待或延迟它以恒定的速度运行?你刚刚证明了我的观点。为了争论,如果我们假设整个时间都是“真正的”恒定速度,那么 constant_speed=total_distance/total_time 和 muratgu 的解决方案是正确的,尽管问题没有说明标称时间。如果不考虑名义时间,muratgu 的第二种情况的票价可能是 33.1 美元而不是 13 美元。
【解决方案2】:

如果我理解正确,这应该可以。如果这不正确,请提供示例输入和输出,以便我知道何时正确。示例代码使用 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;
}

【讨论】:

    【解决方案3】:

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

    对于一种情况,假设行程 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-19
      • 2014-11-02
      • 2010-09-24
      • 1970-01-01
      • 2021-05-25
      • 2023-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多