Полиномиальное Умножение Java - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь написать простой код для полиномиального умножения.Я думаю, что логично принимать входные данные в виде строк, таких как «3x ^ 2».

Проблема в том, что я не знаю, что делать с символами «х» в нем.Как я могу превратить их во что-то, что можно умножить?Какой должна быть логика?Я совершенно новичок в Java и мне действительно нужна помощь.

Например:

String s = "x^2";
String s2 = "3x^5";
//(Multiply them)
result = 3x^7

Ответы [ 2 ]

0 голосов
/ 16 октября 2018
public static int[] multiply(String term1, String term2)
{
    int[] t1 = parse(term1);
    int[] t2 = parse(term2);
    int[] ret = new int[2];
    ret[0] = t1[0] * t2[0];
    ret[1] = t1[1] + t2[1];
    return ret;
}

public static int[] parse(String term)
{
    int pos = term.indexOf("x^");
    String coeffStr = term.substring(0, pos);
    int coeff = Integer.parseInt(coeffStr);
    String powerStr = term.substring(pos + 2);
    int power = Integer.parseInt(powerStr);
    int[] ret = new int[2];
    ret[0] = coeff;
    ret[1] = power;
    return ret;
}
0 голосов
/ 16 октября 2018

Это будет работать для умножения многочленов в формате Ax ^ n, x ^ n или Ax.Я бы поместил термины, которые вы хотите умножить, в список, а затем проанализировал коэффициенты и мощности в HashMap, а затем использовал их, чтобы получить окончательный результат

    List<String> terms = new ArrayList<>(Arrays.asList("x^2", "3x^5", "5x"));

    Map<Integer,Integer> map = new HashMap<>();

    for ( String term : terms ) {

        String coefficient = term.split("x")[0].matches("") ? "1" : term.split("x")[0];

        String[] exponent = term.split("x");

        String power = exponent.length > 1 ? exponent[1].split("\\^")[1] : "1";

        map.put(Integer.parseInt(coefficient), Integer.parseInt(power));
    }
    Integer finalCoefficient = 1;
    Integer finalPower = 0;

    for ( Integer coefficient : map.keySet() ) {
        finalCoefficient *= coefficient;
        finalPower += map.get(coefficient);
    }
    System.out.println(finalCoefficient + "x" + finalPower);
...