Update SeniorProblem.java

pull/4/head
hnu202326010305 1 week ago
parent 4d57401f20
commit 278e7f61a4

@ -15,27 +15,27 @@ public class SeniorProblem implements ProblemsGenerator {
public String generate() { public String generate() {
String expression; String expression;
boolean hasTrig; boolean hasTrig;
do { do {
// 生成基础表达式并添加括号
int numCount = RANDOM.nextInt(5) + 1; int numCount = RANDOM.nextInt(5) + 1;
expression = expressionBuilder.generateBasicExpression(numCount); expression = expressionBuilder.generateBasicExpression(numCount);
List<Integer> numPositions = expressionBuilder.getNumberPositions(expression); expression = bracketManager.addNestedParentheses(expression);
if (RANDOM.nextDouble() < 0.8) { // 获取初始数字位置
int pairs = bracketManager.decideParenthesesPairs(numCount); List<Integer> numPositions = expressionBuilder.getNumberPositions(expression);
if (pairs > 0) {
expression = bracketManager.addParentheses(expression, pairs, numPositions);
}
}
// 添加三角函数并检查是否存在 // 添加三角函数并重新获取数字位置
expression = trigManager.addTrigOperations(expression, numPositions); expression = trigManager.addTrigOperations(expression, numPositions);
List<Integer> trigPositions = expressionBuilder.getNumberPositions(expression); List<Integer> numPositionsAfterTrig = expressionBuilder.getNumberPositions(expression);
hasTrig = expression.contains("sin") || expression.contains("cos") || expression.contains("tan");
// 40% 概率加幂运算,避免与 trig 重叠 // 判断是否包含三角函数
if (RANDOM.nextDouble() < 0.4) { hasTrig = expression.contains("sin") || expression.contains("cos") || expression.contains("tan");
expression = powerManager.addPowerOperationsAvoid(expression, numPositions, trigPositions); // 添加幂运算50%概率执行
if (RANDOM.nextDouble() < 0.5) {
expression = powerManager.addPowerOperations(expression, numPositionsAfterTrig, null);
} }
} while (expressionBuilder.hasDivideByZero(expression) || !hasTrig); } while (expressionBuilder.hasDivideByZero(expression) || !hasTrig);
return expression; return expression;

Loading…
Cancel
Save