Исскуственный интелект в нашей жизни
Для вычислений можно попробовать не само вычисление просчитать, а написать программу на Java например, которая нужное вычисление бы сделала.
Первую версию проги не использовать, а чтобы код ИИ улучшил. Можно даже несколько раз.
После того как прога написана, то запрос в ИИ, чтобы ИИ эту прогу сам и проверил на ошибки. Сделать несколько прогонов.
Запустить прогу, если будут ошибки, то запрос в ИИ, на исправление кода.
По итогу, получится прога, которая при старте будет запрашивать цепочку из цифр и нужную сумму, а на выходе выдавать результат.
Прога за 10 минут.
Можно запустить на https://www.onlinegdb.com выбрав Language --> Java
import java.util.Scanner;
public class Main {
private enum Operation {
ADD('+'), SUBTRACT('-'), MULTIPLY('*'), DIVIDE('/');
char symbol;
Operation(char symbol) {
this.symbol = symbol;
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Введите цепочку цифр: ");
String a = scanner.nextLine();
System.out.print("Введите целевое число: ");
int b = scanner.nextInt();
String result = findSolution(a, b);
if (result != null) {
System.out.println("Решение найдено: " + result + " = " + b);
} else {
System.out.println("Решение не найдено.");
}
scanner.close();
}
private static String findSolution(String digits, int target) {
return recursiveSolve(digits, target, 0, 0, new StringBuilder());
}
private static String recursiveSolve(String digits, int target, int index, long currentValue, StringBuilder expression) {
if (index == digits.length()) {
return currentValue == target ? expression.toString() : null;
}
int originalLength = expression.length();
for (int i = index + 1; i <= digits.length(); i++) {
long number = Long.parseLong(digits.substring(index, i));
if (index == 0) {
expression.append(number);
String result = recursiveSolve(digits, target, i, number, expression);
if (result != null) return result;
expression.setLength(originalLength);
} else {
for (Operation op : Operation.values()) {
long newValue = applyOperation(currentValue, number, op);
if (newValue > target && (op == Operation.ADD || op == Operation.MULTIPLY)) continue;
expression.append(op.symbol).append(number);
String result = recursiveSolve(digits, target, i, newValue, expression);
if (result != null) return result;
expression.setLength(originalLength);
}
}
if (digits.charAt(index) == '0') break;
}
return null;
}
private static long applyOperation(long a, long b, Operation op) {
switch (op) {
case ADD: return a + b;
case SUBTRACT: return a - b;
case MULTIPLY: return a * b;
case DIVIDE: return b != 0 && a % b == 0 ? a / b : Long.MAX_VALUE;
default: throw new IllegalArgumentException("Unknown operation");
}
}
}