Deutsch

Исскуственный интелект в нашей жизни

20.02.25 22:45
Re: Исскуственный интелект в нашей жизни
 
booskot постоялец

Для вычислений можно попробовать не само вычисление просчитать, а написать программу на 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");

}

}

}

 

Перейти на