Skip to content
Snippets Groups Projects
Select Git revision
  • 15bc8f4d125f1c415508f4909564e3851bfadc6f
  • main default protected
2 results

jatek_mester.cpp

Blame
  • 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 {