-
Notifications
You must be signed in to change notification settings - Fork 171
Expand file tree
/
Copy pathmain.js
More file actions
77 lines (62 loc) · 1.59 KB
/
main.js
File metadata and controls
77 lines (62 loc) · 1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
'use strict';
const assert = require('assert');
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let board = [];
let solution = '';
let letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
const printBoard = () => {
for (let i = 0; i < board.length; i++) {
console.log(board[i]);
}
}
const generateSolution = () => {
for (let i = 0; i < 4; i++) {
const randomIndex = getRandomInt(0, letters.length);
solution += letters[randomIndex];
}
}
const getRandomInt = (min, max) => {
return Math.floor(Math.random() * (max - min)) + min;
}
const generateHint = () => {
// your code here
}
const mastermind = (guess) => {
solution = 'abcd'; // Comment this out to generate a random solution
// your code here
}
const getPrompt = () => {
rl.question('guess: ', (guess) => {
mastermind(guess);
printBoard();
getPrompt();
});
}
// Tests
if (typeof describe === 'function') {
solution = 'abcd';
describe('#mastermind()', () => {
it('should register a guess and generate hints', () => {
mastermind('aabb');
assert.equal(board.length, 1);
});
it('should be able to detect a win', () => {
assert.equal(mastermind(solution), 'You guessed it!');
});
});
describe('#generateHint()', () => {
it('should generate hints', () => {
assert.equal(generateHint('abdc'), '2-2');
});
it('should generate hints if solution has duplicates', () => {
assert.equal(generateHint('aabb'), '1-1');
});
});
} else {
generateSolution();
getPrompt();
}