Я создаю математическую игру для java, и я застрял в этой части в соответствии с деталями моего задания. Правила просты: вы должны использовать каждый номер только один раз и только 4 числа, которые были прочитаны от пользователя, чтобы найти одно уравнение для получения 24.
Например, для чисел 4,7,8,8 возможным решением является: (7- (8/8)) * 4 = 24.
Большинство наборов из 4 цифр могут использоваться в нескольких уравнениях, которые приводят к 24. Например, вход 2,2,4,7 можно использовать несколькими способами для получения 24:
2 + 2 * (4 + 7) = 24
2 + 2 * (7 + 4) = 24
(2 + 2) * 7-4 = 24
(2 * 2) * 7-4 = 24
2 * (2 * 7) -4 = 24
Существуют также комбинации из 4 чисел, которые не могут привести к уравнению, равному 24. Например, 1,1,1,1. В этом случае ваша программа должна вернуть, что нет возможного уравнения, равного 24.
Примечание. Хотя мы введем 4 целых числа от 1 до 9, мы будем использовать парные числа для вычисления всех операций. Например, числа 3,3,8,8 можно объединить в формулу: 8/(3-8/3) = 24.
Рабочий процесс: ваша программа должна читать 4 числа от пользователя и выводить формулу, которая приводит к 24. Алгоритм должен перечислять все возможные порядки из четырех чисел, всех возможных комбинаций и всех возможных формул.
Это приводит меня к 24 перестановкам чисел a, b, c, d и 64 перестановок операторов +-/*
. Как я пришел к такому выводу, было 4 ^ 3 4 оператора только 3 заполняющих пятна в уравнении. За исключением сегодняшнего дня у меня возникают проблемы с написанием метода оценки, а также учета родительских элементов в уравнениях.
Вот мой код:
public static void evaluate(cbar [][] operations , double [][] operands)
{
/*
This is the part that gets me how am I supposed to account
for parentases and bring all these expressions togather to
actually form and equation.
*/
}