You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
1.0 KiB

import java.util.List;
import java.util.Random;
/**
* 生成初中题目
*/
public class JuniorProblem implements ProblemsGenerator {
private static final Random RANDOM = new Random();
private final BracketManager bracketManager = new BracketManager();
private final PowerManager powerManager = new PowerManager();
private final ExpressionBuilder expressionBuilder = new ExpressionBuilder();
@Override
public String generate() {
String expression;
boolean hasPower;
do {
int numCount = RANDOM.nextInt(5) + 1;
expression = expressionBuilder.generateBasicExpression(numCount);
expression = bracketManager.addNestedParentheses(expression);
List<Integer> numPositions = expressionBuilder.getNumberPositions(expression);
expression = powerManager.addPowerOperations(expression, numPositions, null);
hasPower = expression.contains("^2") || expression.contains("√");
} while (expressionBuilder.hasDivideByZero(expression) || !hasPower);
return expression;
}
}