Алгоритм для решения незаконченных уравнений в Java

1

Я пытаюсь написать программу, которая, когда даны незавершенные уравнения, выведет самую низкую цифру, которая будет работать, или -1, если никто не будет работать. У меня есть все мои настройки, но на этом этапе я не уверен, как продолжить.

Пример ввода: 1+1=? , 123*45?=5?088 -5?*-1=5 123*45?=5?088, -5?*-1=5, 19--45=5? , & ??*??=302?

Любые советы о том, как справиться с этим, будут оценены.

import java.util.Scanner;
import java.util.regex.*;

public class Runes {

    public static void main(String[] args) {


        Scanner sc = new Scanner(System.in);
        int caseNo = sc.nextInt();
        for (int c = 0; c < caseNo; c++) {

            String input = sc.next();
            String re1="([-]?[0-9?]+)"; // -int1 or int1
            String re2="([+\\-*])";     //+ or - or *
            String re3="([-]?[0-9?]+)"; // -int2 or int2
            String re4="(=)";                   // Equals
            String re5="([-]?[0-9?]+)"; // -int3 or int3

            Pattern pattern = Pattern.compile(re1+re2+re3+re4+re5,Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
            Matcher matcher = pattern.matcher(input);

            if (matcher.find()) {

                String int1 = matcher.group(1);
                String op1 = matcher.group(2);
                String int2 = matcher.group(3);
                String op2 = matcher.group(4);
                String int3 = matcher.group(5);
                System.out.println(int1 + " " + op1 + " " + int2 + " " + op2 + " " + int3);
            }
        }
    }
}
  • 1
    В данном уравнении должны все ? s заменить на ту же цифру?
  • 0
    Нет, но все они символы от 0 до 9.
Показать ещё 3 комментария
Теги:
algorithm

1 ответ

0
Лучший ответ

Здесь один из способов создания приложения Java.

  1. Создайте массив индексов Integer со значением для каждого вопросительного знака. Другими словами, если есть 5 вопросительных знаков, ваш массив индексов Integer имеет 5 элементов.

  2. Цикл через массив индексов Integer. Другими словами, для 5 вопросительных знаков значения должны быть (см. Схему ниже).

  3. Перемещаясь через массив индексов Integer, замените значения индекса для вопросительных знаков.

  4. Проверьте, является ли строка допустимым уравнением. Если это так, сохраните его в списке.

  5. Когда цикл завершен, напечатайте значения List.

Вот макет для пункта 2.

0, 0, 0, 0, 0
1, 0, 0, 0, 0
...
9, 0, 0, 0, 0
0, 1, 0, 0, 0
...
9, 9, 9, 9, 9

Я использовал ваши примеры ввода для создания этого вывода. Я добавил пространства к уравнениям, чтобы их было легче читать. Я вручную отформатировал этот вывод, чтобы поместиться на экране

1 + 1 = ?  -->  1 + 1 = 2
123 * 45? = 5?088  -->  123 * 456 = 56088
-5? * -1 = 5  -->  No equation exists
19 - -45 = 5?  -->  No equation exists
?? * ?? = 302?  -->  57 * 53 = 3021     53 * 57 = 3021     72 * 42 = 3024     
                     42 * 72 = 3024     48 * 63 = 3024     56 * 54 = 3024     
                     36 * 84 = 3024     84 * 36 = 3024     54 * 56 = 3024     
                     63 * 48 = 3024     55 * 55 = 3025     89 * 34 = 3026     
                     34 * 89 = 3026

Ещё вопросы

Сообщество Overcoder
Наверх
Меню