首页 > 解决方案 > CodeSignal 隐藏测试用例失败 - FareEstimator

问题描述

一个隐藏的测试用例继续失败,让我不知道代码中的错误在哪里。根据我从函数输入限制中得出的结论,应该没有特殊的测试用例;但是,也许就是这样。所有其他测试用例都成功。这是问题的 CodeFights 描述:

优步正在构建一个票价估算器,可以在您提出请求之前告诉您您的乘车费用。它通过以下公式传递近似的行驶距离和行驶时间来工作:

(每分钟成本)*(骑行时间)+(每英里成本)*(骑行距离)

其中每分钟成本和每英里成本取决于汽车类型。

您是构建 Fare Estimator 的工程师之一,因此了解每种车型的每分钟成本和每英里成本,以及行驶距离和行驶时间,返回所有车型的票价估计值。

以下是输入的约束:

10 ≤骑行时间≤ 50

5 ≤骑行距离≤ 20

4 ≤ cost_per_minute.length ≤ 10

0.1 ≤ cost_per_minute[i] ≤ 350.0

cost_per_mile.length = cost_per_minute.length

0.5 ≤ cost_per_mile[i] ≤ 7.0

这是针对 CodeSignal 的,这是一个乍一看似乎很容易的问题。我尝试在 JavaScript 中复制我的代码,并且所有测试用例都通过了那里。我能看到的唯一真正区别是 Go 中从 int 到 float32 的转换(即使 JavaScript 在幕后执行此操作)。因此,在进行算术运算之前,我尝试将整数和 float32:s 转换为 float64:s,因为我认为可能存在(非常不可能的)错误,因为小数不足。都没有奏效。我也尝试使用 append(ans, allofthatstuff ) 但没有任何改变。

去(有问题的代码)

func fareEstimator(ride_time int, ride_distance int, cost_per_minute []float32, cost_per_mile []float32) []float32 {
    ans := make([]float32, len(cost_per_mile))
    // ans := []float32{}

    for i := 0; i < len(cost_per_mile); i++ {
        ans[i] = cost_per_minute[i] * float32(ride_time) + cost_per_mile[i] * float32(ride_distance)
        // ans = append(ans, cost_per_minute[i] * float32(ride_time) + cost_per_mile[i] * float32(ride_distance))
    }

    return ans
}

JavaScript

function fareEstimator(ride_time, ride_distance, cost_per_minute, cost_per_mile) {
  var ans = [];

  for (var i = 0; i < cost_per_mile.length; i++) {
    ans.push(cost_per_minute[i] * ride_time + cost_per_mile[i] * ride_distance);
  }

  return ans;
}

标签: gotesting

解决方案


推荐阅读