Skip to content

Commit e052fcf

Browse files
refactoring on verification#2
1 parent 7845d69 commit e052fcf

File tree

6 files changed

+55
-59
lines changed

6 files changed

+55
-59
lines changed

src/games/calc.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,26 @@ import getRandomInRange from '../utils.js';
44

55
const questionGame = 'What is the result of the expression?';
66

7-
const questionRound = () => {
7+
const generateRound = () => {
88
const number1 = getRandomInRange();
99
const number2 = getRandomInRange();
10-
const arr = ['+', '-', '*'];
11-
const mathOperation = Math.floor(Math.random() * arr.length);
12-
const oper = arr[mathOperation];
10+
const operators = ['+', '-', '*'];
11+
const mathOperation = getRandomInRange(0, operators.length - 1);
12+
const oper = operators[mathOperation];
1313
const question = `Question: ${number1} ${oper} ${number2}`;
1414

15-
let result = 0;
15+
let answer = 0;
1616
if (oper === '+') {
17-
result = `${number1 + number2}`;
17+
answer = `${number1 + number2}`;
1818
} else if (oper === '-') {
19-
result = `${number1 - number2}`;
19+
answer = `${number1 - number2}`;
2020
} else if (oper === '*') {
21-
result = `${number1 * number2}`;
21+
answer = `${number1 * number2}`;
2222
}
2323

24-
return [question, result];
24+
return [question, answer];
2525
};
2626

27-
const calcGame = () => playGame(questionGame, questionRound);
27+
const calcGame = () => playGame(questionGame, generateRound);
2828

2929
export default calcGame;

src/games/even.js

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,17 @@ import playGame from '../index.js';
33
import getRandomInRange from '../utils.js';
44

55
const questionGame = 'Answer "yes" if the number is even, otherwise answer "no".';
6+
const isEven = (num) => num % 2 === 0;
67

7-
const questionRound = () => {
8+
const generateRound = () => {
89
const number = getRandomInRange();
910
const question = `Question: ${number}`;
1011

11-
let result = 0;
12-
if (number % 2 === 0) {
13-
result = 'yes';
14-
} else if (number % 2 !== 0) {
15-
result = 'no';
16-
}
12+
const answer = isEven(number) ? 'yes' : 'no';
1713

18-
return [question, result];
14+
return [question, answer];
1915
};
2016

21-
const evenGame = () => playGame(questionGame, questionRound);
17+
const evenGame = () => playGame(questionGame, generateRound);
2218

2319
export default evenGame;

src/games/gcd.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,22 @@ import getRandomInRange from '../utils.js';
44

55
const questionGame = 'Find the greatest common divisor of given numbers.';
66

7-
const questionRound = () => {
7+
const generateRound = () => {
88
let number1 = getRandomInRange();
99
let number2 = getRandomInRange();
1010
const question = `Question: ${number1} ${number2}`;
1111

12-
let result = 0;
12+
let answer = 0;
1313
while (number2 !== 0) {
1414
const temp = number2;
1515
number2 = number1 % number2;
1616
number1 = temp;
1717
}
18-
result = number1.toString();
18+
answer = number1.toString();
1919

20-
return [question, result];
20+
return [question, answer];
2121
};
2222

23-
const gcdGame = () => playGame(questionGame, questionRound);
23+
const gcdGame = () => playGame(questionGame, generateRound);
2424

2525
export default gcdGame;

src/games/prime.js

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,24 @@ import getRandomInRange from '../utils.js';
44

55
const questionGame = 'Answer "yes" if given number is prime. Otherwise answer "no".';
66

7-
const questionRound = () => {
7+
const isPrime = (num) => {
8+
if (num <= 1) return false;
9+
for (let divider = 2; divider <= num / 2; divider += 1) {
10+
if (num % divider === 0) return false;
11+
}
12+
return true;
13+
};
14+
15+
const generateRound = () => {
816
const number = getRandomInRange();
917
const question = `Question: ${number}`;
1018

11-
let result = '';
12-
const isPrime = () => {
13-
if (number <= 1) return 'no';
14-
for (let divider = 2; divider <= number / 2; divider += 1) {
15-
if (number % divider === 0) return 'no';
16-
}
17-
return 'yes';
18-
};
19-
result = isPrime();
20-
21-
return [question, result];
19+
// let answer = '';
20+
const answer = isPrime(number) ? 'yes' : 'no';
21+
22+
return [question, answer];
2223
};
2324

24-
const primeGame = () => playGame(questionGame, questionRound);
25+
const primeGame = () => playGame(questionGame, generateRound);
2526

2627
export default primeGame;

src/games/progression.js

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,31 @@ import getRandomInRange from '../utils.js';
44

55
const questionGame = 'What number is missing in the progression?';
66

7-
const questionRound = () => {
7+
const progression = (startNumb, pogrlength, progrStep) => {
8+
const arr = [];
9+
for (let i = 0; i <= pogrlength; i += 1) {
10+
arr.push(startNumb + i * progrStep);
11+
}
12+
return arr;
13+
};
14+
15+
const generateRound = () => {
816
const number = getRandomInRange();
917
const length = getRandomInRange(5, 10);
1018
const step = getRandomInRange(1, 10);
1119
const itemSkip = getRandomInRange(2, length);
12-
const progression = () => {
13-
const arr = [];
14-
for (let i = 0; i <= length; i += 1) {
15-
arr.push(number + i * step);
16-
}
17-
return arr;
18-
};
1920

20-
const result = progression()[itemSkip].toString();
21+
const answer = progression(number, length, step)[itemSkip].toString();
2122

22-
const arrProgression = progression();
23+
const arrProgression = progression(number, length, step);
2324
/* eslint-disable no-unused-vars */
2425
const skipItem = arrProgression.splice([itemSkip], 1, '..');
2526
/* eslint-enable no-unused-vars */
2627
const question = `Question: ${arrProgression.join(' ')}`;
2728

28-
return [question, result];
29+
return [question, answer];
2930
};
3031

31-
const progressionGame = () => playGame(questionGame, questionRound);
32+
const progressionGame = () => playGame(questionGame, generateRound);
3233

3334
export default progressionGame;

src/index.js

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,23 @@
11
import readlineSync from 'readline-sync';
2-
32
import makeWelcome from './cli.js';
3+
// set game cycles
4+
const roundsCount = 3;
45

5-
const playGame = (questiongame, questionRound) => {
6+
const playGame = (questiongame, generateRound) => {
67
// greeting
78
const userName = makeWelcome();
89
// outputting of the game question
910
console.log(questiongame);
1011
// game cycle = 3
11-
const roundsCount = 3;
1212
for (let i = 0; i < roundsCount; i += 1) {
13-
const round = questionRound();
14-
console.log(round[0]);
15-
const answer = readlineSync.question('Your answer: ');
16-
// right answer
17-
const correctAnsw = round[1];
13+
const [question, answer] = generateRound();
14+
console.log(question);
15+
const userAnsw = readlineSync.question('Your answer: ');
1816
// checking and output of the answers
19-
if (answer === correctAnsw) {
17+
if (answer === userAnsw) {
2018
console.log('Correct!');
2119
} else {
22-
console.log(`'${answer}' is wrong answer ;(. Correct answer was '${correctAnsw}'.\nLet's try again, ${userName}!`);
20+
console.log(`'${userAnsw}' is wrong answer ;(. Correct answer was '${answer}'.\nLet's try again, ${userName}!`);
2321
return;
2422
}
2523
}

0 commit comments

Comments
 (0)