public class JuniorGenerator extends AbstractQuestionGenerator{ public JuniorGenerator() { super(Level.JUNIOR); } @Override String generateExpression() { return generateSub(4); } private String generateSub(int depth) { if (depth == 0 || random.nextDouble() < 0.4) { return String.valueOf(getRandomNumber()); } double r = random.nextDouble(); if (r < 0.5) { String left = generateSub(depth - 1); String op = getRandomBinaryOp(); String right = generateSub(depth - 1); return "(" + left + op + right + ")"; } else if (r < 0.75) { String sub = generateSub(depth - 1); return "sqrt(" + sub + ")"; } else { String sub = generateSub(depth - 1); return "(" + sub + ")^2"; } } @Override boolean isValidForLevel(String expression) { return expression.contains("sqrt") || expression.contains("^2"); } }