【问题标题】:Create a math formula for conversions创建转换的数学公式
【发布时间】:2015-06-25 17:19:24
【问题描述】:

我想知道是否可以在尝试创建一个简单的数学公式时获得帮助。我最近接受了一个 tier1 程序员的面试,并被要求制作一个程序。我把整个事情做得非常好,但让我面试失败的是我需要创建一个数学公式来将不同的计量单位转换为其他计量单位。这很容易,但困难的是我需要根据给我的英尺长度来转换这些不同的测量单位。这真的让我很烦恼,因为那个人说我可以只做一个方程式,可以用于所有转换为不同测量单位的转换。因此,给出的当前度量单位包含其原始度量单位和以英尺为单位的度量。该公式必须利用以英尺为单位的不同长度来进行这些转换。否则,我只需将所有内容除以并乘以得到我的答案即可得到这份工作。不同的计量单位如下:

inch,.083333    
fathom,6    
foot,1    
furlong,660    
kilometer,3281.5    
meter,3.2815    
mile,5280    
rod,16.5    
yard,3 

逗号后面的数字是该度量单位的以英尺为单位的长度。我已经盯着这个看了好几个小时了,但我想不出一个用于所有长度的方程。对于那些给我帮助的人,我真的很感激,我开始为此感到沮丧。

为了编程,我使用X作为原始测量单位,Y作为所需的单位或测量,Z作为需要转换的输入长度。

【问题讨论】:

    标签: math solver units-of-measurement equation-solving


    【解决方案1】:

    你可以这样做:

    import java.util.HashMap;
    
    public class ConvertLength {
      private static HashMap<String,Double> lengthInFeet
        = new HashMap<String,Double>();
    
      static {
        lengthInFeet.put("inch", 0.083333);
        lengthInFeet.put("inches", 0.083333);
        lengthInFeet.put("fathom", 6.0);
        lengthInFeet.put("fathoms", 6.0);
        lengthInFeet.put("foot", 1.0);
        lengthInFeet.put("feet", 1.0);
        lengthInFeet.put("furlong", 660.0);
        lengthInFeet.put("furlongs", 660.0);
        lengthInFeet.put("kilometer", 3281.5);
        lengthInFeet.put("kilometers", 3281.5);
        lengthInFeet.put("meter", 3.2815);
        lengthInFeet.put("meters", 3.2815);
        lengthInFeet.put("mile", 5280.0);
        lengthInFeet.put("miles", 5280.0);
        lengthInFeet.put("rod", 16.5);
        lengthInFeet.put("rods", 16.5);
        lengthInFeet.put("yard", 3.0);
        lengthInFeet.put("yards", 3.0);
      };
    
      public static double convert(double length, String from, String to) {
        return length * lengthInFeet.get(from) / lengthInFeet.get(to);
      }
    
      public static void main(String[] args) {
        double length = Double.parseDouble(args[0]);
        String from = args[1];
        String to = args [2];
    
        System.out.println(length + " " + from + " = "
                   + convert(length,from,to) + " " + to);
      }
    }
    

    【讨论】:

      【解决方案2】:

      抛开实际问题,您可以使用如下公式:

      长度 = αvwᵀ

      这里,α是以英尺为单位的长度,v是一个包含转换因子的向量(即[0.08333, 6, 1, 660, ...]),w是一个类似于[0, ..., 1, ..., 0],在对应于所需单位的索引处的值为 1。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多