Skip to content

Commit 8b9749e

Browse files
committed
changes App.java, Calc.java, Engine.java, Even.java, Gcd.java, Prime.java, Progression.java
1 parent 5198f24 commit 8b9749e

File tree

6 files changed

+95
-57
lines changed

6 files changed

+95
-57
lines changed
Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
package hexlet.code;
22

33
import java.util.Scanner;
4-
import java.util.function.Supplier;
54

65
public class Engine {
7-
private static final int COUNT_OF_ROUNDS = 3;
6+
public static final int COUNT_OF_ROUNDS = 3;
87

9-
public static void gameEngine(String exercise, Supplier<String[]> questionAndAnswerSupplier) {
8+
public static void gameEngine(String exercise, String[][] questionAndAnswerPairs) {
109
Scanner sc = new Scanner(System.in);
1110
System.out.println("Welcome to the Brain Games!");
1211
System.out.println("May I have your name?");
@@ -15,9 +14,8 @@ public static void gameEngine(String exercise, Supplier<String[]> questionAndAns
1514
System.out.println(exercise);
1615

1716
for (int i = 0; i < COUNT_OF_ROUNDS; i++) {
18-
String[] questionAndAnswer = questionAndAnswerSupplier.get();
19-
String question = questionAndAnswer[0];
20-
String correctAnswer = questionAndAnswer[1];
17+
String question = questionAndAnswerPairs[i][0];
18+
String correctAnswer = questionAndAnswerPairs[i][1];
2119
System.out.println("Question: " + question);
2220
String answer = sc.next();
2321
System.out.println("Your answer: " + answer);
@@ -28,9 +26,10 @@ public static void gameEngine(String exercise, Supplier<String[]> questionAndAns
2826
}
2927
System.out.println("Correct!");
3028
}
31-
System.out.println("Congratulations, " + name + "!");
29+
System.out.println("Congratulations, " + name + "!");
3230
}
33-
public static void runGame(String exercise, Supplier<String[]> questionAndAnswerSupplier) {
34-
gameEngine(exercise, questionAndAnswerSupplier);
31+
32+
public static void runGame(String exercise, String[][] questionAndAnswerPairs) {
33+
gameEngine(exercise, questionAndAnswerPairs);
3534
}
36-
}
35+
}

app/src/main/java/hexlet/code/games/Calc.java

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,21 @@
44
import hexlet.code.Utils;
55

66
public class Calc {
7-
public static String[] getQuestionAndAnswer() {
8-
char[] operators = {'+', '-', '*'};
9-
int a = Utils.getRandomNumber();
10-
int b = Utils.getRandomNumber();
11-
int randomOperator = Utils.getRandomNumber(0, operators.length - 1);
12-
char operator = operators[randomOperator];
13-
String question = (a + " " + operator + " " + b);
14-
int result = calculate(a, b, operator);
15-
16-
String correctAnswer = Integer.toString(result);
17-
return new String[]{question, correctAnswer};
7+
public static String[][] getQuestionAndAnswer() {
8+
String[][] pair = new String[Engine.COUNT_OF_ROUNDS][2];
9+
for (int i = 0; i < Engine.COUNT_OF_ROUNDS; i++) {
10+
char[] operators = {'+', '-', '*'};
11+
int a = Utils.getRandomNumber();
12+
int b = Utils.getRandomNumber();
13+
int randomOperator = Utils.getRandomNumber(0, operators.length - 1);
14+
char operator = operators[randomOperator];
15+
String question = (a + " " + operator + " " + b);
16+
int result = calculate(a, b, operator);
17+
String correctAnswer = Integer.toString(result);
18+
pair[i][0] = question;
19+
pair[i][1] = correctAnswer;
20+
}
21+
return pair;
1822
}
1923

2024
public static int calculate(int a, int b, char operator) {
@@ -28,6 +32,7 @@ public static int calculate(int a, int b, char operator) {
2832

2933
public static void playCalc() {
3034
String exercise = "What is the result of the expression?";
31-
Engine.runGame(exercise, Calc::getQuestionAndAnswer);
35+
String[][] questionAndAnswerPairs = getQuestionAndAnswer();
36+
Engine.runGame(exercise, questionAndAnswerPairs);
3237
}
3338
}

app/src/main/java/hexlet/code/games/Even.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,22 @@ public static boolean parityCheck(int randomNumber) {
99
return randomNumber % 2 == 0;
1010
}
1111

12-
private static String[] getQuestionAndAnswer() {
13-
int randomNumber = Utils.getRandomNumber();
14-
String question = Integer.toString(randomNumber);
15-
String correctAnswer = parityCheck(randomNumber) ? "yes" : "no";
16-
return new String[]{question, correctAnswer};
12+
private static String[][] getQuestionAndAnswer() {
13+
String[][] pair = new String[Engine.COUNT_OF_ROUNDS][2];
14+
for (int i = 0; i < Engine.COUNT_OF_ROUNDS; i++) {
15+
int randomNumber = Utils.getRandomNumber();
16+
String question = Integer.toString(randomNumber);
17+
String correctAnswer = parityCheck(randomNumber) ? "yes" : "no";
18+
pair[i][0] = question;
19+
pair[i][1] = correctAnswer;
20+
}
21+
return pair;
1722
}
1823

1924
public static void playEven() {
2025
String exercise = "Answer 'yes' if the number is even, otherwise answer 'no'.";
21-
Engine.runGame(exercise, Even::getQuestionAndAnswer);
26+
String[][] questionAndAnswerPairs = getQuestionAndAnswer();
27+
Engine.runGame(exercise, questionAndAnswerPairs);
2228
}
2329
}
2430

app/src/main/java/hexlet/code/games/Gcd.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,31 @@
44
import hexlet.code.Utils;
55

66
public class Gcd {
7-
private static String[] getQuestionAndAnswer() {
8-
int a = Utils.getRandomNumber();
9-
int b = Utils.getRandomNumber();
10-
String question = (a + " " + b);
7+
private static int checkingGcd(int a, int b) {
118
while (b != 0) {
129
int check = b;
1310
b = a % b;
1411
a = check;
1512
}
16-
String correctAnswer = Integer.toString(a);
17-
return new String[]{question, correctAnswer};
13+
return a;
14+
}
15+
16+
private static String[][] getQuestionAndAnswer() {
17+
String[][] pair = new String[Engine.COUNT_OF_ROUNDS][2];
18+
for (int i = 0; i < Engine.COUNT_OF_ROUNDS; i++) {
19+
int a = Utils.getRandomNumber();
20+
int b = Utils.getRandomNumber();
21+
String question = (a + " " + b);
22+
String correctAnswer = Integer.toString(checkingGcd(a, b));
23+
pair[i][0] = question;
24+
pair[i][1] = correctAnswer;
25+
}
26+
return pair;
1827
}
1928

2029
public static void playGcd() {
2130
String exercise = "Find the greatest common divisor of given numbers.";
22-
Engine.runGame(exercise, Gcd::getQuestionAndAnswer);
31+
String[][] questionAndAnswerPairs = getQuestionAndAnswer();
32+
Engine.runGame(exercise, questionAndAnswerPairs);
2333
}
2434
}

app/src/main/java/hexlet/code/games/Prime.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,16 @@ public class Prime {
77

88
private static final int FIRST_ODD_NUMBER = 3;
99

10-
private static String[] getQuestionAndAnswer() {
11-
int number = Utils.getRandomNumber();
12-
String question = Integer.toString(number); // Формируем вопрос
13-
String correctAnswer = isPrime(number) ? "yes" : "no"; // Определяем правильный ответ
14-
return new String[]{question, correctAnswer};
10+
private static String[][] getQuestionAndAnswer() {
11+
String[][] pair = new String[Engine.COUNT_OF_ROUNDS][2];
12+
for (int i = 0; i < Engine.COUNT_OF_ROUNDS; i++) {
13+
int number = Utils.getRandomNumber();
14+
String question = Integer.toString(number);
15+
String correctAnswer = isPrime(number) ? "yes" : "no";
16+
pair[i][0] = question;
17+
pair[i][1] = correctAnswer;
18+
}
19+
return pair;
1520
}
1621

1722
private static boolean isPrime(int number) {
@@ -34,7 +39,8 @@ private static boolean isPrime(int number) {
3439

3540
public static void playPrime() {
3641
String exercise = "Answer 'yes' if given number is prime. Otherwise answer 'no'.";
37-
Engine.runGame(exercise, Prime::getQuestionAndAnswer);
42+
String[][] questionAndAnswerPairs = getQuestionAndAnswer();
43+
Engine.runGame(exercise, questionAndAnswerPairs);
3844
}
3945

4046
}

app/src/main/java/hexlet/code/games/Progression.java

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,37 @@ private static int[] generateProgression(int length, int start, int step) {
1616
return numbers;
1717
}
1818

19-
private static String[] getQuestionAndAnswer() {
20-
int randomLength = Utils.getRandomNumber(MIN_LENGTH, MAX_LENGTH);
21-
int step = Utils.getRandomNumber();
22-
int startNumber = Utils.getRandomNumber();
23-
24-
int[] numbers = generateProgression(randomLength, startNumber, step);
25-
26-
int randomIndex = Utils.getRandomNumber(0, randomLength - 1);
27-
String correctAnswer = String.valueOf(numbers[randomIndex]);
28-
numbers[randomIndex] = -1;
29-
String question = String.join(" ", java.util.Arrays.stream(numbers)
30-
.mapToObj(num -> num == -1 ? ".." : String.valueOf(num))
31-
.toArray(String[]::new));
32-
33-
return new String[] {question.trim(), correctAnswer};
19+
private static String[][] getQuestionAndAnswer() {
20+
String[][] pair = new String[Engine.COUNT_OF_ROUNDS][2];
21+
22+
for (int i = 0; i < Engine.COUNT_OF_ROUNDS; i++) {
23+
int randomLength = Utils.getRandomNumber(MIN_LENGTH, MAX_LENGTH);
24+
int step = Utils.getRandomNumber();
25+
int startNumber = Utils.getRandomNumber();
26+
27+
int[] numbers = generateProgression(randomLength, startNumber, step);
28+
29+
int randomIndex = Utils.getRandomNumber(0, randomLength - 1);
30+
String correctAnswer = String.valueOf(numbers[randomIndex]);
31+
32+
StringBuilder questionBuilder = new StringBuilder();
33+
for (int j = 0; j < numbers.length; j++) {
34+
if (j == randomIndex) {
35+
questionBuilder.append(".. ");
36+
} else {
37+
questionBuilder.append(numbers[j]).append(" ");
38+
}
39+
}
40+
String question = questionBuilder.toString();
41+
pair[i][0] = question;
42+
pair[i][1] = correctAnswer;
43+
}
44+
return pair;
3445
}
3546

3647
public static void playProgression() {
3748
String exercise = "What number is missing in the progression?";
38-
Engine.runGame(exercise, Progression::getQuestionAndAnswer);
49+
String[][] questionAndAnswerPairs = getQuestionAndAnswer();
50+
Engine.runGame(exercise, questionAndAnswerPairs);
3951
}
4052
}

0 commit comments

Comments
 (0)