Select Git revision
jatek_mester.cpp
jatek_mester.cpp 1.82 KiB
#include "jatek_mester.hpp"
#include <fstream>
#include <sstream>
#include <cmath>
JatekMester::JatekMester()
: board(9, std::vector<int>(9, 0)), original_board(9, std::vector<int>(9, 0)) {}
bool JatekMester::is_valid_move(int number, int row, int col) const {
for (int j = 0; j < 9; ++j) {
if (j != col && board[row][j] == number) {
return false;
}
}
for (int i = 0; i < 9; ++i) {
if (i != row && board[i][col] == number) {
return false;
}
}
int block_start_row = row - row % 3;
int block_start_col = col - col % 3;
for (int i = block_start_row; i < block_start_row + 3; ++i) {
for (int j = block_start_col; j < block_start_col + 3; ++j) {
if (i != row && j != col && board[i][j] == number) {
return false;
}
}
}
return true;
}
bool JatekMester::is_original(int row, int col) const {
return original_board[row][col] != 0;
}
void JatekMester::update_value(int row, int col, int value) {
if (!is_original(row, col)) {
board[row][col] = value;
}
}
int JatekMester::get_value(int row, int col) const {
return board[row][col];
}
bool JatekMester::load_from_file(const std::string& filename) {
std::ifstream file(filename);
if (!file.is_open()) {
return false;
}
for (int i = 0; i < 9; ++i) {
for (int j = 0; j < 9; ++j) {
if (!(file >> original_board[i][j])) {
return false;
}
board[i][j] = original_board[i][j];
}
}
return true;
}
bool JatekMester::is_cell_valid(int row, int col) const {