Skip to content

Commit c6b01e2

Browse files
committed
add brain-calc
1 parent 5a75edd commit c6b01e2

File tree

5 files changed

+54
-6
lines changed

5 files changed

+54
-6
lines changed

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ brain-even:
1010
node bin/brain-even.js
1111
brain-calc:
1212
node bin/brain-calc.js
13+
brain-gcd:
14+
node bin/brain-gcd.js
1315

1416

1517
lint:

bin/brain-gcd.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/usr/bin/env node
2+
import { playGameGcd } from '../games/brain-gcd.js';
3+
4+
// Запускаем игру
5+
playGameGcd();

games/brain-gcd.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import readlineSync from 'readline-sync';
2+
import { greeting, getRandomNumber, gcd, handleAnswer } from '../index.js';
3+
// brain-even
4+
export const playGameGcd = () => {
5+
//Приветствуем
6+
const userName = greeting();
7+
// Поясняем смысл
8+
console.log('Find the greatest common divisor of given numbers.');
9+
// Цикл игры
10+
let correctAnswersCount = 0;
11+
while (correctAnswersCount < 3) {
12+
// Получаем число
13+
const randomNumber1 = getRandomNumber();
14+
const randomNumber2 = getRandomNumber();
15+
console.log(`Question: ${randomNumber1} ${randomNumber2}`);
16+
// Получаем ответ пользователя
17+
const userAnswer = readlineSync.question('Your answer: ');
18+
// Проверяем четность
19+
const correctAnswer = String(gcd(randomNumber1, randomNumber2));
20+
// Сверяем результаты
21+
const incorrectMessage = `'${userAnswer}' is wrong answer ;(. Correct answer was '${correctAnswer}'.\nLet's try again, ${userName}!`;
22+
const result = handleAnswer(userAnswer, correctAnswer, userName, correctAnswersCount, incorrectMessage);
23+
correctAnswersCount = result.correctAnswersCount;
24+
// Закрываем цикл
25+
if (result.finished) {
26+
break;
27+
}
28+
}
29+
};

index.js

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,15 @@ export const handleAnswer = (userAnswer, correctAnswer, userName, correctAnswers
2323
if (userAnswer === correctAnswer) {
2424
console.log('Correct!');
2525
correctAnswersCount += 1;
26-
// Проверяем, достигли ли мы 3 правильных ответа
2726
if (correctAnswersCount === 3) {
27+
// Завершение игры при достижении 3
2828
console.log(`Congratulations, ${userName}!`);
29-
// Завершение игры при достижении 3
3029
return { correctAnswersCount, finished: true };
3130
}
3231
} else {
33-
console.log(incorrectMessage);
34-
// Завершение игры при неправильном ответе
35-
return { correctAnswersCount, finished: true };
32+
// Завершение игры при неправильном ответе
33+
console.log(incorrectMessage);
34+
return { correctAnswersCount, finished: true };
3635
}
3736
// Игра продолжается
3837
return { correctAnswersCount, finished: false };
@@ -48,6 +47,7 @@ export const getRandomOperator = () => {
4847

4948
// Функция вычисления результата
5049
export const getResult = (num1, operator, num2) => {
50+
//Определяем значение оператора
5151
switch (operator) {
5252
case '+':
5353
return num1 + num2;
@@ -57,3 +57,14 @@ export const getResult = (num1, operator, num2) => {
5757
return num1 * num2;
5858
}
5959
};
60+
61+
//Функция вычисления НОД
62+
export const gcd = (num1, num2) => {
63+
//Алгоритм Евклида
64+
while (num2 !== 0) {
65+
let temp = num2;
66+
num2 = num1 % num2;
67+
num1 = temp;
68+
}
69+
return num1;
70+
};

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"bin": {
77
"brain-games": "bin/brain-games.js",
88
"brain-even": "bin/brain-even.js",
9-
"brain-calc": "bin/brain-calc.js"
9+
"brain-calc": "bin/brain-calc.js",
10+
"brain-gcd": "bin/brain-gcd.js"
1011
},
1112
"main": "index.js",
1213
"scripts": {

0 commit comments

Comments
 (0)