Skip to content

Commit

Permalink
refactoring prime, even
Browse files Browse the repository at this point in the history
  • Loading branch information
akivonen committed Apr 17, 2024
1 parent 4b8a3a7 commit 0d97f88
Show file tree
Hide file tree
Showing 14 changed files with 61 additions and 59 deletions.
2 changes: 1 addition & 1 deletion bin/brain-calc.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env node

import app from '../src/index.js';
import calc from '../src/calc.js';
import calc from '../src/games/calc.js';

app(calc);
2 changes: 1 addition & 1 deletion bin/brain-even.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env node

import app from '../src/index.js';
import even from '../src/even.js';
import even from '../src/games/even.js';

app(even);
2 changes: 1 addition & 1 deletion bin/brain-gcd.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env node

import app from '../src/index.js';
import gcd from '../src/gcd.js';
import gcd from '../src/games/gcd.js';

app(gcd);
2 changes: 1 addition & 1 deletion bin/brain-prime.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env node

import app from '../src/index.js';
import prime from '../src/prime.js';
import prime from '../src/games/prime.js';

app(prime);
2 changes: 1 addition & 1 deletion bin/brain-progression.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env node

import app from '../src/index.js';
import progression from '../src/progression.js';
import progression from '../src/games/progression.js';

app(progression);
16 changes: 0 additions & 16 deletions src/even.js

This file was deleted.

8 changes: 5 additions & 3 deletions src/calc.js → src/games/calc.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import randomize from './utils/randomize.js';
import randomize from '../utils/randomize.js';

export default function calc(questionCount = 3) {
const calc = (questionCount = 3) => {
const rules = 'What is the result of the expression?';
const questionsAnswers = [];
const operationsMapping = {
Expand All @@ -25,4 +25,6 @@ export default function calc(questionCount = 3) {
});
}
return { rules, questionsAnswers };
}
};

export default calc;
6 changes: 6 additions & 0 deletions src/games/even.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import predicateGame from '../utils/predicateGame.js';

const isEven = (num) => num % 2 === 0;
const even = (questionCount = 3) => predicateGame(isEven, questionCount);

export default even;
8 changes: 5 additions & 3 deletions src/gcd.js → src/games/gcd.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import randomize from './utils/randomize.js';
import randomize from '../utils/randomize.js';

const getGCD = (a, b) => {
if (b === 0) {
return a;
}
return getGCD(b, a % b);
};
export default function gcd(questionCount = 3) {
const gcd = (questionCount = 3) => {
const rules = 'Find the greatest common divisor of given numbers.';
const questionsAnswers = [];
for (let i = 0; i < questionCount; i += 1) {
Expand All @@ -20,4 +20,6 @@ export default function gcd(questionCount = 3) {
});
}
return { rules, questionsAnswers };
}
};

export default gcd;
17 changes: 17 additions & 0 deletions src/games/prime.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import predicateGame from '../utils/predicateGame.js';

const isPrime = (num) => {
if (num < 2) {
return false;
}
const halfNum = Math.floor(num / 2);
for (let i = halfNum; i > 1; i -= 1) {
if (num % i === 0) {
return false;
}
}
return true;
};
const prime = (questionCount = 3) => predicateGame(isPrime, questionCount);

export default prime;
8 changes: 5 additions & 3 deletions src/progression.js → src/games/progression.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import randomize from './utils/randomize.js';
import randomize from '../utils/randomize.js';

export default function progression(questionCount = 3) {
const progression = (questionCount = 3) => {
const rules = 'What number is missing in the progression?';
const arrayLength = randomize(5, 15);
const questionsAnswers = [];
Expand All @@ -22,4 +22,6 @@ export default function progression(questionCount = 3) {
});
}
return { rules, questionsAnswers };
}
};

export default progression;
3 changes: 1 addition & 2 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ export default function app(game, questionsCount = countOfQuestions) {
console.log(`Question: ${question}`);
const answer = readlineSync.question('Your answer: ');
if (answer !== correctAnswer) {
console.log(`${answer} is wrong answer ;(. Correct answer was ${correctAnswer}.
Let's try again, Bill!`);
console.log(`${answer} is wrong answer ;(. Correct answer was ${correctAnswer}.\nLet's try again, ${userName}!`);
return;
}
console.log('Correct!');
Expand Down
27 changes: 0 additions & 27 deletions src/prime.js

This file was deleted.

17 changes: 17 additions & 0 deletions src/utils/predicateGame.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import randomize from './randomize.js';

const predicateGame = (predicateFunc, questionCount) => {
const rules = 'Answer "yes" if given number is prime. Otherwise answer "no".';
const questionsAnswers = [];
for (let i = 0; i < questionCount; i += 1) {
const number = randomize(0, 100);
const correctAnswer = predicateFunc(number) ? 'yes' : 'no';
questionsAnswers.push({
question: number,
correctAnswer,
});
}
return { rules, questionsAnswers };
};

export default predicateGame;

0 comments on commit 0d97f88

Please sign in to comment.