forked from dmitryTimoshenko/Sudoku
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreadAndSolve.js
46 lines (36 loc) · 2.21 KB
/
readAndSolve.js
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
// Подключить функции из файла sudoku.js.
const sudoku = require('./sudoku');
function readAndSolve(error, fileData) {
// Если чтение файла не удалось, выбросить ошибку с описанием проблемы и
// завершить работу функции.
if (error) {
throw error;
}
// Разбить содержимое файла построчно и отфильтровать все пустые строки.
const puzzles = fileData
.split('\n')
.filter((line) => line !== '');
// Получить номер судоку из process.argv, либо взять 1-й судоку по умолчанию.
let puzzleNumber = Number(process.argv[2]) || 1;
// Ограничить номер судоку максимальным числом массива с паззлами.
if (puzzleNumber > puzzles.length) {
puzzleNumber = puzzles.length;
}
// Получить желаемый судоку по индексу и вывести его в консоль.
const puzzle = puzzles[puzzleNumber - 1];
console.log(`Решаем судоку №${puzzleNumber}:`);
console.log(puzzle, '\n');
// Использовать функцию solve из файла sudoku.js для решения судоку.
const solvedPuzzle = sudoku.solve(puzzle);
// Использовать функцию isSolved из файла sudoku.js для проверки решения судоку.
if (!sudoku.isSolved(solvedPuzzle)) {
console.log(`Не смогли решить судоку №${puzzleNumber} :(`, '\n');
return; // Если судоку не решён, завершить работу этой функции.
}
// Код ниже сработает, только если проверка решения судоку прошла успешно.
console.log(`Судоку №${puzzleNumber} решён успешно!`);
// Использовать функцию prettyBoard из файла sudoku.js для форматирования
// игрового поля в строку в желаемом формате.
console.log(sudoku.prettyBoard(solvedPuzzle), '\n');
}
module.exports = readAndSolve;