Skip to content

Commit f2e8554

Browse files
committed
add brain-prime game
1 parent 6a85c08 commit f2e8554

File tree

5 files changed

+55
-1
lines changed

5 files changed

+55
-1
lines changed

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ brain-gcd:
1414
node bin/brain-gcd.js
1515
brain-progression:
1616
node bin/brain-progression.js
17+
brain-progression:
18+
node bin/brain-prime.js
1719

1820

1921
lint:

bin/brain-prime.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 { playGamePrime } from '../games/brain-prime.js';
3+
4+
// Запускаем игру
5+
playGamePrime();

games/brain-prime.js

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

index.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,18 @@ export const generateRandomArray = () => {
8282

8383
// Функция для изменнения значения в массиве
8484
export const replaceValueInArray = (array, oldValue, newValue) => array.map((item) => (item === oldValue ? newValue : item));
85+
86+
// Функция проверки простого числа
87+
export const isPrime = (num) => {
88+
// Проверка на числа меньше 2
89+
if (num <= 1) {
90+
return 'no';
91+
}
92+
// Проверка делителей от 2 до квадратного корня из n
93+
for (let i = 2; i <= Math.sqrt(num); i += 1) {
94+
if (num % i === 0) {
95+
return 'no';
96+
}
97+
}
98+
return 'yes';
99+
};

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
"brain-even": "bin/brain-even.js",
99
"brain-calc": "bin/brain-calc.js",
1010
"brain-gcd": "bin/brain-gcd.js",
11-
"brain-progression": "bin/brain-progression.js"
11+
"brain-progression": "bin/brain-progression.js",
12+
"brain-prime": "bin/brain-prime.js"
1213
},
1314
"main": "index.js",
1415
"scripts": {

0 commit comments

Comments
 (0)