package services; import interfaces.QuestionInterface; import models.DifficultyLevel; import java.util.HashSet; import java.util.Random; import java.util.Set; public class QuestionGenerator { private Random random; private FileManager fileManager; public QuestionGenerator() { random = new Random(); fileManager = new FileManager(); } public String[] generateQuestions(DifficultyLevel level, int count, String username) { Set existingQuestions = fileManager.loadExistingQuestions(username); Set newQuestions = new HashSet<>(); String[] questions = new String[count]; for (int i = 0; i < count; i++) { QuestionInterface question; int attempts = 0; do { question = new MathQuestion(level); attempts++; if (attempts > 100) { return null; } } while (existingQuestions.contains(question.getQuestionText()) || newQuestions.contains(question.getQuestionText()) || !question.isValid()); newQuestions.add(question.getQuestionText()); questions[i] = (i + 1) + ". " + question.getQuestionText(); } return questions; } }