From 0220759433526e946dbce52e79068f89fc11fc08 Mon Sep 17 00:00:00 2001 From: William Weston Date: Thu, 5 Oct 2023 14:55:14 -0400 Subject: [PATCH] Added solution to the Kattis "Mate in One" problem. Added "Development" folder in which the projects and files used to develop each solution will be placed along with any tests. --- Development/Mate In One Move/.gitignore | 52 ++ .../Mate In One Move/.vscode/settings.json | 3 + Development/Mate In One Move/CMakeLists.txt | 94 +++ .../Mate In One Move/Problem Description.odt | Bin 0 -> 87315 bytes .../Mate In One Move/Problem Description.pdf | Bin 0 -> 124365 bytes Development/Mate In One Move/include/Solver.h | 91 +++ .../Mate In One Move/include/Solver.inl | 112 ++++ Development/Mate In One Move/input.txt | 48 ++ Development/Mate In One Move/main.cpp | 33 + Development/Mate In One Move/src/Solver.cpp | 376 +++++++++++ .../tests/mate_in_one_move.t.cpp | 588 ++++++++++++++++++ mateinone.cpp | 531 ++++++++++++++++ 12 files changed, 1928 insertions(+) create mode 100644 Development/Mate In One Move/.gitignore create mode 100644 Development/Mate In One Move/.vscode/settings.json create mode 100644 Development/Mate In One Move/CMakeLists.txt create mode 100644 Development/Mate In One Move/Problem Description.odt create mode 100644 Development/Mate In One Move/Problem Description.pdf create mode 100644 Development/Mate In One Move/include/Solver.h create mode 100644 Development/Mate In One Move/include/Solver.inl create mode 100644 Development/Mate In One Move/input.txt create mode 100644 Development/Mate In One Move/main.cpp create mode 100644 Development/Mate In One Move/src/Solver.cpp create mode 100644 Development/Mate In One Move/tests/mate_in_one_move.t.cpp create mode 100644 mateinone.cpp diff --git a/Development/Mate In One Move/.gitignore b/Development/Mate In One Move/.gitignore new file mode 100644 index 0000000..675b5a9 --- /dev/null +++ b/Development/Mate In One Move/.gitignore @@ -0,0 +1,52 @@ +#cmake + +CMakeLists.txt.user +CMakeCache.txt +CMakeFiles +CMakeScripts +Testing +Makefile +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +_deps + +#C++ + +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app +# name of executable if no extention + +build/ + diff --git a/Development/Mate In One Move/.vscode/settings.json b/Development/Mate In One Move/.vscode/settings.json new file mode 100644 index 0000000..dbaf2db --- /dev/null +++ b/Development/Mate In One Move/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools" +} \ No newline at end of file diff --git a/Development/Mate In One Move/CMakeLists.txt b/Development/Mate In One Move/CMakeLists.txt new file mode 100644 index 0000000..e1ee0f9 --- /dev/null +++ b/Development/Mate In One Move/CMakeLists.txt @@ -0,0 +1,94 @@ +cmake_minimum_required( VERSION 3.26 ) + +project( Mate_In_One_Move ) + +set( MAIN_PROGRAM MIOM ) + +# Set compiler flags +set( CMAKE_CXX_STANDARD 20 ) +set( CMAKE_CXX_EXTENSIONS OFF ) + +# use mold linker +set(CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=mold") +set(CMAKE_MODULE_LINKER_FLAGS_INIT "-fuse-ld=mold") +set(CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=mold") + +set(SOURCE + src/Solver.cpp + main.cpp + ) + + +add_executable( ${MAIN_PROGRAM} ${SOURCE} ) + +target_compile_options( ${MAIN_PROGRAM} + PRIVATE + -Wall + -Werror + -Wextra + -pedantic + -pedantic-errors +) + +target_include_directories( ${MAIN_PROGRAM} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) +target_include_directories( ${MAIN_PROGRAM} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src" ) + + +set( TEST_SUITE MIOM_Tests_Suite ) + +include(CTest) +enable_testing() + +find_package( GTest REQUIRED ) + +set( TEST_SOURCE + src/Solver.cpp + tests/mate_in_one_move.t.cpp +) + +add_executable( ${TEST_SUITE} ${TEST_SOURCE} ) + +target_compile_options( ${TEST_SUITE} + PRIVATE + -Wall + -Wextra + -pedantic + -pedantic-errors + -pg + -ftest-coverage + -fsanitize=address + -fsanitize=undefined + -fsanitize=shift + -fsanitize=shift-exponent + -fsanitize=shift-base + -fsanitize=integer-divide-by-zero + -fsanitize=vla-bound + -fsanitize=null + -fsanitize=return + -fsanitize=signed-integer-overflow + -fsanitize=bounds + -fsanitize=bounds-strict + -fsanitize=alignment + -fsanitize=object-size + -fsanitize=float-divide-by-zero + -fsanitize=float-cast-overflow + -fsanitize=enum + -fsanitize=pointer-overflow + -fsanitize-address-use-after-scope + -fstack-protector-all +) + +target_link_options(${TEST_SUITE} + PRIVATE + -fsanitize=undefined + -fsanitize=address +) + +target_link_libraries( ${TEST_SUITE} GTest::gtest_main ) +target_link_libraries( ${TEST_SUITE} GTest::gmock_main) + +target_include_directories( ${TEST_SUITE} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) +target_include_directories( ${TEST_SUITE} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src" ) + +include( GoogleTest ) +gtest_discover_tests( ${TEST_SUITE} ) \ No newline at end of file diff --git a/Development/Mate In One Move/Problem Description.odt b/Development/Mate In One Move/Problem Description.odt new file mode 100644 index 0000000000000000000000000000000000000000..24cc015c19c10a1457e513121ae466ea69c3fc11 GIT binary patch literal 87315 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 literal 0 HcmV?d00001 diff --git a/Development/Mate In One Move/Problem Description.pdf b/Development/Mate In One Move/Problem Description.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b8dcd2c99c3494e82119ab0183cb241d0842cdb9 GIT binary patch literal 124365 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�$K!r4q@hfJZR99}eSOhN}$mHz%M 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 NK!>JHJ9&FJ{2wSA5d;7L literal 0 HcmV?d00001 diff --git a/Development/Mate In One Move/include/Solver.h b/Development/Mate In One Move/include/Solver.h new file mode 100644 index 0000000..251a9d9 --- /dev/null +++ b/Development/Mate In One Move/include/Solver.h @@ -0,0 +1,91 @@ +/** + * @file Solver.h + * @author William Weston + * @brief Class to solve "Mate in One" Problem + * @version 0.1 + * @date 2023-06-09 + * + * @copyright Copyright (c) 2023 + * + */ +#ifndef WJTW_SOLVER_H_2023_06_09_INCLUDE +#define WJTW_SOLVER_H_2023_06_09_INCLUDE + +#include +#include +#include +#include + +using Board = std::vector; // [row][col] +using Cell = std::pair; // row by col +using Direction = std::pair; +using Directions = std::vector; + +struct Move +{ + using Cell = std::pair; // row by col + + Cell from = { -1, -1 }; // returing a default constructed move indicates no "mate in one move" could be found + Cell to = { -1, -1 }; +}; + + auto operator<<( std::ostream&, Move const& ) -> std::ostream&; +constexpr auto operator==( Move const& lhs, Move const& rhs ) noexcept -> bool; + auto output_format( Move const& move ) -> std::string; + +class Solver final +{ +public: + auto load_board( std::istream& in ) -> bool; + auto solve() -> Move; + auto print_board() const -> void; + +private: + using Board = std::vector; // [row][col] + + Board board_ = {}; + + auto find_solution( std::vector const& white_moves ) -> Move; + auto is_checkmate( Move const& white ) -> bool; +}; + + +constexpr auto Empty = '.'; +constexpr auto Unlimited = 16; // max distance a piece can travel + +auto const Cross = Directions{ { 1, 0 }, { 0, 1 }, { -1, 0 }, { 0, -1 } }; +auto const Diagonal = Directions{ { 1, 1 }, { -1, 1 }, { 1, -1 }, { -1, -1 } }; +auto const Knight = Directions{ { 1, 2 }, { 1, -2 }, { 2, 1 }, { 2, -1 }, { -1, 2 }, { -1, -2 }, { -2, 1 }, { -2, -1 } }; +auto const All_Moves = Directions{ { 1, 0 }, { 0, 1 }, { -1, 0 }, { 0, -1 }, { 1, 1 }, { -1, 1 }, { 1, -1 }, { -1, -1 } }; + + +enum class Side +{ + white, + black, +}; + +auto generate_moves( Side side, Board const& board ) -> std::vector; +auto generate_moves( Cell const& cell, Board const& board ) -> std::vector; +auto pawn_moves( Cell const& cell, Board const& board ) -> std::vector; +auto move_generator( Cell const&, Board const&, Directions const&, int ) -> std::vector; +auto do_move( Move const& move, Board const& board ) -> Board; +auto do_castling_move( Move const& move, Board const& board ) -> Board; + +auto can_escape( Move const& black, Board const& board ) -> bool; +constexpr auto is_white( unsigned char ch ) noexcept -> bool; +constexpr auto is_castled( Cell cell, char piece ) noexcept -> bool; +constexpr auto is_pawn( char piece ) noexcept -> bool; +constexpr auto is_knight_move( Move const& move ) noexcept -> bool; +constexpr auto is_king_taken( Move const&, Board const&, Side ) -> bool; +constexpr auto is_valid( Move const& move, Board const& board ) noexcept -> bool; + +auto is_in_check( Side side, Board const& board ) -> bool; +auto print_board( Board const& board ) -> void; + +// ------------------------------------------------------------------------------------------------------------------- + + +#include "Solver.inl" + +#endif \ No newline at end of file diff --git a/Development/Mate In One Move/include/Solver.inl b/Development/Mate In One Move/include/Solver.inl new file mode 100644 index 0000000..d2098e8 --- /dev/null +++ b/Development/Mate In One Move/include/Solver.inl @@ -0,0 +1,112 @@ +/** + * @file Solver.inl + * @author William Weston + * @brief Inline functions from Solver.h + * @version 0.1 + * @date 2023-06-12 + * + * @copyright Copyright (c) 2023 + * + */ + +#ifndef WJTW_SOLVER_INL_2023_06_12_INCLUDE +#define WJTW_SOLVER_INL_2023_06_12_INCLUDE + +#include // isupper +#include + +constexpr auto +operator==( Move const& lhs, Move const& rhs ) noexcept -> bool +{ + return lhs.from.first == rhs.from.first && lhs.from.second == rhs.from.second && + lhs.to.first == rhs.to.first && lhs.to.second == rhs.to.second; +} + + +constexpr auto +is_white( unsigned char ch ) noexcept -> bool +{ + return std::isupper( ch ); +} + +constexpr auto +is_pawn( char piece ) noexcept -> bool +{ + return ( piece == 'p' || piece =='P' ); +} + +constexpr auto +is_castled( Cell cell, char piece ) noexcept -> bool +{ + if ( !is_pawn( piece ) ) // only pawns can be castled + return false; + + [[maybe_unused]] auto const& [row, dummy] = cell; + auto const isWhite = is_white( piece ); + + return ( ( isWhite && row == 0 ) || ( !isWhite && row == 7 ) ); +} + + +constexpr auto +is_knight_move( Move const& move ) noexcept -> bool +{ + auto const& [from_row, from_col] = move.from; + auto const& [to_row, to_col] = move.to; + + for ( auto const& direction : Knight ) + { + auto const& [row_dir, col_dir] = direction; + auto const dest_row = from_row + row_dir; + auto const dest_col = from_col + col_dir; + + return ( ( dest_row == to_row ) && ( dest_col == to_col ) ); + } + + return false; +} + +/** + * @brief + * + * @param move + * @param board + * @param side the side ( black/white ) whose piece the Move represents + * @return true + * @return false + */ +constexpr auto +is_king_taken( Move const& move, Board const& board, Side side ) -> bool +{ + auto const& [to_row, to_col] = move.to; + auto const& dest_piece = board[to_row][to_col]; + + switch ( side ) + { + case Side::white: + return ( dest_piece == 'k' ); + case Side::black: + return ( dest_piece == 'K' ); + default: + throw std::runtime_error( "Error: Unknown Side" ); + } +} + +constexpr auto +is_valid( Move const& move, Board const& board ) noexcept -> bool +{ + auto const& [from_row, from_col] = move.from; + auto const& [to_row, to_col] = move.to; + + // out of bounds + if ( to_row < 0 || to_row > 7 || to_col < 0 || to_col > 7 ) + return false; + + auto const& piece = board[from_row][from_col]; + auto const& destination_piece = board[to_row][to_col]; + + return ( ( destination_piece == Empty ) || // empty square + ( is_white( piece ) != is_white( destination_piece ) ) ); // the two pieces are not of the same side +} + +#endif // WJTW_SOLVER_INL_2023_06_12_INCLUDE \ No newline at end of file diff --git a/Development/Mate In One Move/input.txt b/Development/Mate In One Move/input.txt new file mode 100644 index 0000000..f398cda --- /dev/null +++ b/Development/Mate In One Move/input.txt @@ -0,0 +1,48 @@ +rn...q.b +pb..pPkp +.p...... +..ppN..p +...P.... +..NB.... +PPPQ.PP. +..KR.... +..kr...r +p..n..pp +.p.Bnp.. +....p... +........ +........ +PPP..PPP +...RKB.R +rnbq..kr +.p.n..pp +p...p... +...pP... +......Q. +B.PB.... +P.P..PPP +R....RK. +r.bqkb.r +pp.npppp +.....n.. +.....N.. +...PN... +........ +PPPBQPPP +R...KB.R +........ +.....p.. +...p.... +b...Q.K. +k.nq.... +p..NR..r +..P..P.. +R..Bn... +.rbq..r. +p.Pk.K.b +.P.bnp.. +..n....p +........ +........ +....p... +...R.... diff --git a/Development/Mate In One Move/main.cpp b/Development/Mate In One Move/main.cpp new file mode 100644 index 0000000..8217421 --- /dev/null +++ b/Development/Mate In One Move/main.cpp @@ -0,0 +1,33 @@ +/** + * @file main.cpp + * @author William Weston + * @brief Mate in One Move Solver + * @version 0.1 + * @date 2023-06-09 + * + * @copyright Copyright (c) 2023 + * + */ + +#include "Solver.h" + +#include +#include + +// ------------------------------------------------------------------------------------------------ + +auto main() -> int +{ + auto solver = Solver(); + + while ( solver.load_board( std::cin ) ) + { + auto solution = solver.solve( ); + std::cout << output_format( solution ) << "\n"; + } + + return EXIT_SUCCESS; +} + +// ------------------------------------------------------------------------------------------------ + diff --git a/Development/Mate In One Move/src/Solver.cpp b/Development/Mate In One Move/src/Solver.cpp new file mode 100644 index 0000000..5554ab4 --- /dev/null +++ b/Development/Mate In One Move/src/Solver.cpp @@ -0,0 +1,376 @@ +/** + * @file Solver.cpp + * @author William Weston + * @brief Class to solve "Mate in One" Problem + * @version 0.1 + * @date 2023-06-09 + * + * @copyright Copyright (c) 2023 + * + */ + +#include "Solver.h" + +#include +#include +#include +#include +#include +#include + + + + + + +// --------------------------------------------- Move ---------------------------------------------- + +auto +operator<<( std::ostream& out, Move const& mv ) -> std::ostream& +{ + out << '[' << mv.from.first << ',' << mv.from.second << "] -> [" << mv.to.first << ',' << mv.to.second << ']'; + return out; +} + +auto +output_format( Move const& move ) -> std::string +{ + if ( move == Move() ) + return "no solution"; + + auto const& from = move.from; + auto const from_file = 'a' + from.second; + auto const from_rank = 8 - from.first; + + auto const& to = move.to; + auto const to_file = 'a' + to.second; + auto const to_rank = 8 - to.first; + + auto ret = std::string(); + + ret.push_back( from_file ); + ret += std::to_string( from_rank ); + ret.push_back( to_file ); + ret += std::to_string( to_rank ); + + return ret; +} + +// --------------------------------------------- Solver ------------------------------------------- + +auto +Solver::load_board( std::istream& in ) -> bool +{ + board_.clear(); // clear the previous board + + // no input validation required + auto line = std::string(); + + for ( auto i = 0; i < 8; ++i ) + { + std::getline( in, line ); + if ( line.size() ) + board_.push_back( line ); + } + + return ( board_.size() == 8 ); // return false when no more valid boards can be loading from the stream +} + +auto +Solver::solve() -> Move +{ + // generate all moves for white + auto const white_moves = generate_moves( Side::white, board_ ); + + return find_solution( white_moves ); +} + +auto +Solver::print_board() const -> void +{ + ::print_board( board_ ); +} + + +// ------------------------------------------------------------------------------------------------ + +/** + * @brief + * + * @param white_moves + * @return Move + * + * returing a default constructed move indicates no "mate in one move" could be found + */ +auto +Solver::find_solution( std::vector const& white_moves ) -> Move +{ + // check if a move results in checkmate + for ( auto const& move : white_moves ) + if ( is_checkmate( move ) ) + return move; + + return Move{}; // no solution +} + +auto +Solver::is_checkmate( Move const& white_move ) -> bool +{ + // for each possible white move generate all possible black moves + // if all black moves result in check mate for a specific white move, then return true + + auto const tmp_board = do_move( white_move, board_ ); + + if ( !is_in_check( Side::black, tmp_board ) ) + return false; + + auto const black_moves = generate_moves( Side::black, tmp_board ); + + for ( auto const& black_move : black_moves ) + if ( can_escape( black_move, tmp_board ) ) + return false; // no need to process any more black moves + + return true; +} + + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + + +auto +generate_moves( Side side, Board const& board ) -> std::vector +{ + auto is_side = ( side == Side::white ) + ? [] ( unsigned char ch ) { return std::isupper( ch ); } // white's pieces are capital case + : [] ( unsigned char ch ) { return std::islower( ch ); }; // black's pieces are lowercase + + auto moves = std::vector(); + + for ( auto row = 0u; row < 8u; ++row ) + { + for ( auto col = 0u; col < 8u; ++col ) + { + if ( is_side( board[row][col] ) ) // is it our piece? + { + auto tmp = generate_moves( { row, col }, board ); + moves.insert( moves.end(), + std::make_move_iterator( tmp.begin() ), + std::make_move_iterator( tmp.end() ) ); + } + } + } + + return moves; +} + +auto +generate_moves( Cell const& cell, Board const& board ) -> std::vector +{ + auto const& [row, col] = cell; + + auto const piece = []( unsigned char ch ) { return ( ch != '.' ) ? std::toupper( ch ) : '.'; }( board[row][col] ); + + // if a pawn is castled add moves for both 'Q' and 'N" + switch ( piece ) + { + case 'P': + return pawn_moves( cell, board ); + case 'N': + return move_generator( cell, board, Knight, 1 ); + case 'B': + return move_generator( cell, board, Diagonal, Unlimited ); + case 'R': + return move_generator( cell, board, Cross, Unlimited ); + case 'Q': + return move_generator( cell, board, All_Moves, Unlimited ); + case 'K': + return move_generator( cell, board, All_Moves, 1 ); + default: + throw std::runtime_error( "Error: Unknown Piece" ); + } + + return {}; +} + +auto +move_generator( Cell const& cell, Board const& board, Directions const& directions, int distance ) -> std::vector +{ + auto moves = std::vector(); + + for ( auto const& [row, col] = cell; auto const& direction : directions ) + { + for ( auto dis = 1; dis <= distance; ++dis ) + { + auto const& [row_dir, col_dir] = direction; + auto const dest = std::make_pair( row + row_dir * dis, col + col_dir * dis ); + auto tmp_move = Move( cell, dest ); + + if ( is_valid( tmp_move, board ) ) + { + moves.push_back( std::move( tmp_move ) ); + + if ( auto const& target = board[dest.first][dest.second]; target != Empty ) + break; // if we took a piece we can't go any farther in that direction ( the opponents piece is blocking us ) + } + else + break; // a piece is in our way or edge of board; + } + } + + return moves; +} + +auto +pawn_moves( Cell const& cell, Board const& board ) -> std::vector +{ + auto const& [row, col] = cell; + auto const& piece = board[row][col]; + auto const isWhite = is_white( piece ); + + // Special Case: Pawn is castled, add moves for both 'Q' and 'N' + if ( is_castled( cell, piece) ) + { + auto queen = move_generator( cell, board, All_Moves, Unlimited ); + auto knight = move_generator( cell, board, Knight, 1 ); + + queen.insert( queen.end(), std::make_move_iterator( knight.begin() ), std::make_move_iterator( knight.end() ) ); + return queen; + } + + // All other cases: + auto moves = std::vector(); + + // pawn going forward + auto const dir = isWhite ? -1 : 1; + + auto tmp_move = Move( cell, std::make_pair( row + dir, col ) ); + if ( is_valid( tmp_move, board ) ) + { + if ( board[row + dir][col] == Empty ) // pawn can only move forward to an empty cell + moves.push_back( std::move( tmp_move ) ); + } + + if ( ( isWhite && row == 6 ) || ( !isWhite && row == 1 ) ) // pawn in intial square, can move two squares + { + tmp_move = Move( cell, std::make_pair( row + 2 * dir, col ) ); + if ( is_valid( tmp_move, board ) ) + if ( board[row + dir][col] == Empty && board[row + 2 * dir][col] == Empty ) + moves.push_back( std::move( tmp_move ) ); + } + + // pawns can move diagonally one square to attack + auto const top_row = row + dir; + auto const top_left_col = col - 1; + auto const top_right_col = col + 1; + auto const& top_left = board[top_row][top_left_col]; + auto const& top_right = board[top_row][top_right_col]; + + if ( top_left != Empty && ( isWhite != is_white( top_left ) ) ) + { + tmp_move = Move( cell, std::make_pair( top_row, top_left_col ) ); + if ( is_valid( tmp_move, board ) ) + moves.push_back( std::move( tmp_move ) ); + } + + if ( top_right != Empty && ( isWhite != is_white( top_right ) ) ) + { + tmp_move = Move( cell, std::make_pair( top_row, top_right_col ) ); + if ( is_valid( tmp_move, board ) ) + moves.push_back( std::move( tmp_move ) ); + } + + return moves; +} + +auto +do_move( Move const& move, Board const& board ) -> Board +{ + auto const& [from_row, from_col] = move.from; + auto const& [to_row, to_col] = move.to; + auto const& piece = board[from_row][from_col]; + + // handle special case of pawn being castled + if ( is_castled( move.from, piece ) ) + return do_castling_move( move, board ); + + // all other moves handled here + auto new_board = board; + + new_board[from_row][from_col] = Empty; // now empty + new_board[to_row][to_col] = piece; + + return new_board; +} + +auto +do_castling_move( Move const& move, Board const& board ) -> Board +{ + auto const& [from_row, from_col] = move.from; + auto const& [to_row, to_col] = move.to; + auto const& piece = board[from_row][from_col]; + auto const isWhite = is_white( piece ); + auto new_board = board; + + new_board[from_row][from_col] = Empty; // now empty + + if ( is_knight_move( move ) ) + new_board[to_row][to_col] = ( isWhite ) ? 'N' : 'n'; + + else // queen move + new_board[to_row][to_col] = ( isWhite ) ? 'Q' : 'q'; + + return new_board; +} + +auto +can_escape( Move const& black, Board const& board ) -> bool +{ + auto const tmp_board = do_move( black, board ); + + // need to check if white king is taken + if ( is_king_taken( black, board, Side::black) ) + return true; // black can escape by taking white's king + + // generate white moves and check if any of them result in a black king killed + auto const white_moves = generate_moves( Side::white, tmp_board ); + + for ( auto const& move : white_moves ) // if any of white's potential next moves can take the black king, black's move + { // doesn't result in his escape + if ( is_king_taken( move, tmp_board, Side::white ) ) + return false; + } + + return true; +} + + +auto +print_board( Board const& board ) -> void +{ + std::cout << '\n' << " 0 1 2 3 4 5 6 7 \n"; + for ( auto row = 0; auto const& line : board ) + { + std::cout << row++ << ' '; + for ( auto const& piece : line ) + std::cout << ' ' << piece << ' '; + + std::cout << '\n'; + } +} + +auto +is_in_check( Side side, Board const& board ) -> bool +{ + auto const opponent = ( side == Side::white ) ? Side::black : Side::white; + auto const moves = generate_moves( opponent, board ); + + for ( auto move : moves ) + { + if ( is_king_taken( move, board, opponent ) ) + return true; + } + + return false; +} +// ------------------------------------------------------------------------------------------------ diff --git a/Development/Mate In One Move/tests/mate_in_one_move.t.cpp b/Development/Mate In One Move/tests/mate_in_one_move.t.cpp new file mode 100644 index 0000000..9b3f338 --- /dev/null +++ b/Development/Mate In One Move/tests/mate_in_one_move.t.cpp @@ -0,0 +1,588 @@ +/** + * @file mate_in_one_move.t.cpp + * @author William Weston + * @brief + * @version 0.1 + * @date 2023-06-12 + * + * @copyright Copyright (c) 2023 + * + */ + + +#include "Solver.h" + + +#include +#include + +#include +#include +#include + + + + +TEST( Tests_MateInOneMove, generate_moves_for_cell ) +{ + + auto board = Board{ "........", + "........", + "........", + "........", + "........", + "........", + "....P...", + "........" + }; + + + auto results = generate_moves( Cell{ 6, 4 }, board ); + + + EXPECT_THAT( results, testing::UnorderedElementsAre( Move{ { 6, 4 }, { 5, 4 } }, + Move{ { 6, 4 }, { 4, 4 } } + ) ); +} + + +TEST( Tests_MateInOneMove, Solver_Sample_Input1 ) +{ + using namespace std::literals; + + auto board = std::string{ + "rn...q.b\n" + "pb..pPkp\n" + ".p......\n" + "..ppN..p\n" + "...P....\n" + "..NB....\n" + "PPPQ.PP.\n" + "..KR....\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "d2g5"s ); +} + +TEST( Tests_MateInOneMove, Solver_Sample_Input2 ) +{ + using namespace std::literals; + + auto board = std::string{ + "..kr...r\n" + "p..n..pp\n" + ".p.Bnp..\n" + "....p...\n" + "........\n" + "........\n" + "PPP..PPP\n" + "...RKB.R\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "f1a6"s ); +} + +TEST( Tests_MateInOneMove, Solver_Sample_Input3 ) +{ + using namespace std::literals; + + auto board = std::string{ + "rnbq..kr\n" + ".p.n..pp\n" + "p...p...\n" + "...pP...\n" + "......Q.\n" + "B.PB....\n" + "P.P..PPP\n" + "R....RK.\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "g4e6"s ); +} + +TEST( Tests_MateInOneMove, Solver_Sample_Input4 ) +{ + using namespace std::literals; + + auto board = std::string{ + "r.bqkb.r\n" + "pp.npppp\n" + ".....n..\n" + ".....N..\n" + "...PN...\n" + "........\n" + "PPPBQPPP\n" + "R...KB.R\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "e4d6"s ); +} + +TEST( Tests_MateInOneMove, Solver_Sample_Input5 ) +{ + using namespace std::literals; + + auto board = std::string{ + "........\n" + ".....p..\n" + "...p....\n" + "b...Q.K.\n" + "k.nq....\n" + "p..NR..r\n" + "..P..P..\n" + "R..Bn...\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "e5e8"s ); +} + +TEST( Tests_MateInOneMove, Solver_Sample_Input6 ) +{ + using namespace std::literals; + + auto board = std::string{ + ".rbq..r.\n" + "p.Pk.K.b\n" + ".P.bnp..\n" + "..n....p\n" + "........\n" + "........\n" + "....p...\n" + "...R....\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "c7b8"s ); +} + +// https://korpalskichess.com/?page_id=2013#1 +TEST( Tests_MateInOneMove, RookAndKing ) +{ + using namespace std::literals; + + auto board = std::string{ + ".k......\n" + "......R.\n" + ".K......\n" + "........\n" + "........\n" + "........\n" + "........\n" + "........\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "g7g8"s ); +} + +// https://korpalskichess.com/?page_id=2025#1 +TEST( Tests_MateInOneMove, TwoRooksAndKing ) +{ + using namespace std::literals; + + auto board = std::string{ + "........\n" + "........\n" + "........\n" + "...K....\n" + ".......k\n" + "........\n" + "......R.\n" + ".....R..\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "f1h1"s ); +} + +// https://korpalskichess.com/?page_id=6954#1 +TEST( Tests_MateInOneMove, KingQueenAndPawns ) +{ + using namespace std::literals; + + auto board = std::string{ + "........\n" + "........\n" + "........\n" + ".p.Q....\n" + "k...K...\n" + "..P.....\n" + "........\n" + "........\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "d5a2"s ); +} + +// https://korpalskichess.com/?page_id=3316#1 +TEST( Tests_MateInOneMove, KingAndPawns ) +{ + using namespace std::literals; + + auto board = std::string{ + "....k...\n" + "....P...\n" + "....KP..\n" + ".......p\n" + "........\n" + "........\n" + "........\n" + "........\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "f6f7"s ); +} + +// https://korpalskichess.com/?page_id=7004#1 +TEST( Tests_MateInOneMove, KingAndFourBishops ) +{ + using namespace std::literals; + + auto board = std::string{ + ".k......\n" + ".....K..\n" + ".....B..\n" + "..BB.B..\n" + "........\n" + "........\n" + "........\n" + "........\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "f6e5"s ); +} + + +// https://korpalskichess.com/?page_id=7006#1 +TEST( Tests_MateInOneMove, KingAndTwoKnights ) +{ + using namespace std::literals; + + auto board = std::string{ + ".......k\n" + "........\n" + ".....NKN\n" + "........\n" + "........\n" + "........\n" + "........\n" + "....q...\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "h6f7"s ); +} + +// https://korpalskichess.com/?page_id=7010#1 +TEST( Tests_MateInOneMove, KingBishopKnight ) +{ + using namespace std::literals; + + auto board = std::string{ + ".......k\n" + "........\n" + "......KN\n" + "..B.....\n" + "........\n" + "........\n" + "........\n" + "........\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "c5d4"s ); +} + +// https://korpalskichess.com/?page_id=3674#1 +TEST( Tests_MateInOneMove, KingQueenRook ) +{ + using namespace std::literals; + + auto board = std::string{ + "........\n" + "........\n" + "...K...k\n" + "......R.\n" + ".....Q..\n" + "........\n" + "........\n" + "........\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "f4h4"s ); +} + +// https://korpalskichess.com/?page_id=6863#1 +TEST( Tests_MateInOneMove, KingTwoQueens ) +{ + using namespace std::literals; + + auto board = std::string{ + "......Q.\n" + "........\n" + "...Q....\n" + "........\n" + "kp......\n" + "........\n" + "..K.....\n" + "........\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "d6a6"s ); +} + + +// https://korpalskichess.com/?page_id=3056#1 +TEST( Tests_MateInOneMove, KingRookBishop ) +{ + using namespace std::literals; + + auto board = std::string{ + "........\n" + "k.B.....\n" + "..K.....\n" + "........\n" + "........\n" + "........\n" + ".......R\n" + "........\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "h2a2"s ); +} + + +// https://korpalskichess.com/?page_id=3041#1 +TEST( Tests_MateInOneMove, KingQueenBishop ) +{ + using namespace std::literals; + + auto board = std::string{ + ".Q......\n" + "..K.....\n" + "........\n" + "........\n" + "k.......\n" + "........\n" + "........\n" + "....B...\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "b8b4"s ); +} + +// https://korpalskichess.com/?page_id=3062#1 +TEST( Tests_MateInOneMove, KingQueenKnight ) +{ + // Failure of this test indicates wrong move was chosen because stalemate was not taken into account e4c3 + // Stalemate is a situation in chess where the player whose turn it is to move is not in check and has no legal move. + using namespace std::literals; + + auto board = std::string{ + "........\n" + ".K......\n" + "........\n" + "........\n" + "....N...\n" + "......Q.\n" + "........\n" + ".....k..\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "g3f2"s ); +} + + + +// https://korpalskichess.com/?page_id=3049#1 +TEST( Tests_MateInOneMove, KingRookKnight ) +{ + using namespace std::literals; + + auto board = std::string{ + "......k.\n" + ".....R..\n" + "....N.K.\n" + "........\n" + "........\n" + "........\n" + "........\n" + "........\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "f7f8"s ); // wrong solution f7h7 +} + + +TEST( Tests_MateInOneMove, NoSolution ) +{ + using namespace std::literals; + + auto board = std::string{ + "........\n" + "........\n" + "........\n" + "........\n" + "........\n" + "........\n" + "........\n" + "........\n" + }; + + auto input_stream = std::istringstream( board ); + auto solver = Solver(); + + solver.load_board( input_stream ); + + auto move = solver.solve(); + auto solution = output_format( move ); + + EXPECT_EQ( solution, "no solution"s ); +} diff --git a/mateinone.cpp b/mateinone.cpp new file mode 100644 index 0000000..c78bef0 --- /dev/null +++ b/mateinone.cpp @@ -0,0 +1,531 @@ +/** + * @file mateinone.cpp + * @author William Weston + * @brief Mate in One Move Problem From Kattis + * @version 0.1 + * @date 2023-06-09 + * + * @copyright Copyright (c) 2023 + * + */ + + +#include +#include // EXIT_SUCCESS +#include +#include +#include +#include +#include +#include + +using Board = std::vector; // [row][col] +using Cell = std::pair; // row by col +using Direction = std::pair; +using Directions = std::vector; + +constexpr auto Empty = '.'; +constexpr auto Unlimited = 16; // max distance a piece can travel + +auto const Cross = Directions{ { 1, 0 }, { 0, 1 }, { -1, 0 }, { 0, -1 } }; +auto const Diagonal = Directions{ { 1, 1 }, { -1, 1 }, { 1, -1 }, { -1, -1 } }; +auto const Knight = Directions{ { 1, 2 }, { 1, -2 }, { 2, 1 }, { 2, -1 }, { -1, 2 }, { -1, -2 }, { -2, 1 }, { -2, -1 } }; +auto const All_Moves = Directions{ { 1, 0 }, { 0, 1 }, { -1, 0 }, { 0, -1 }, { 1, 1 }, { -1, 1 }, { 1, -1 }, { -1, -1 } }; + + +struct Move +{ + using Cell = std::pair; // row by col + + Cell from = { -1, -1 }; // returing a default constructed move indicates no "mate in one move" could be found + Cell to = { -1, -1 }; +}; + + auto operator<<( std::ostream&, Move const& ) -> std::ostream&; +constexpr auto operator==( Move const& lhs, Move const& rhs ) noexcept -> bool; + + +class Solver final +{ +public: + auto load_board( std::istream& in ) -> bool; + auto solve() -> Move; + +private: + using Board = std::vector; // [row][col] + + Board board_ = {}; + + auto find_solution( std::vector const& white_moves ) -> Move; + auto is_checkmate( Move const& white ) -> bool; +}; + + +enum class Side +{ + white, + black, +}; + +// ------------------------------------------------------------------------------------------------ + +auto generate_moves( Side side, Board const& board ) -> std::vector; +auto generate_moves( Cell const& cell, Board const& board ) -> std::vector; +auto pawn_moves( Cell const& cell, Board const& board ) -> std::vector; +auto move_generator( Cell const&, Board const&, Directions const&, int ) -> std::vector; +auto do_move( Move const& move, Board const& board ) -> Board; +auto do_castling_move( Move const& move, Board const& board ) -> Board; + +auto can_escape( Move const& black, Board const& board ) -> bool; +auto is_white( unsigned char ch ) noexcept -> bool; +auto is_castled( Cell cell, char piece ) noexcept -> bool; +auto is_pawn( char piece ) noexcept -> bool; +auto is_knight_move( Move const& move ) noexcept -> bool; +auto is_king_taken( Move const&, Board const&, Side ) -> bool; +auto is_valid( Move const& move, Board const& board ) noexcept -> bool; +auto is_in_check( Side side, Board const& board ) -> bool; + +auto output_format( Move const& move ) -> std::string; + +// ------------------------------------------------------------------------------------------------ + +auto main() -> int +{ + auto solver = Solver(); + + while ( solver.load_board( std::cin ) ) + { + auto solution = solver.solve( ); + std::cout << output_format( solution ) << "\n"; + } + + return EXIT_SUCCESS; +} + + +auto +output_format( Move const& move ) -> std::string +{ + if ( move == Move() ) + return "no solution"; + + auto const& from = move.from; + auto const from_file = 'a' + from.second; + auto const from_rank = 8 - from.first; + + auto const& to = move.to; + auto const to_file = 'a' + to.second; + auto const to_rank = 8 - to.first; + + auto ret = std::string(); + + ret.push_back( from_file ); + ret += std::to_string( from_rank ); + ret.push_back( to_file ); + ret += std::to_string( to_rank ); + + return ret; +} + + +// ------------------------------------------------------------------------------------------------ + + +constexpr auto +operator==( Move const& lhs, Move const& rhs ) noexcept -> bool +{ + return lhs.from.first == rhs.from.first && lhs.from.second == rhs.from.second && + lhs.to.first == rhs.to.first && lhs.to.second == rhs.to.second; +} + + +auto +operator<<( std::ostream& out, Move const& mv ) -> std::ostream& +{ + out << '[' << mv.from.first << ',' << mv.from.second << "] -> [" << mv.to.first << ',' << mv.to.second << ']'; + return out; +} + + +auto +is_white( unsigned char ch ) noexcept -> bool +{ + return std::isupper( ch ); +} + +auto +is_pawn( char piece ) noexcept -> bool +{ + return ( piece == 'p' || piece =='P' ); +} + +auto +is_castled( Cell cell, char piece ) noexcept -> bool +{ + if ( !is_pawn( piece ) ) // only pawns can be castled + return false; + + [[maybe_unused]] auto const& [row, dummy] = cell; + auto const isWhite = is_white( piece ); + + return ( ( isWhite && row == 0 ) || ( !isWhite && row == 7 ) ); +} + + +auto +is_knight_move( Move const& move ) noexcept -> bool +{ + auto const& [from_row, from_col] = move.from; + auto const& [to_row, to_col] = move.to; + + for ( auto const& direction : Knight ) + { + auto const& [row_dir, col_dir] = direction; + auto const dest_row = from_row + row_dir; + auto const dest_col = from_col + col_dir; + + return ( ( dest_row == to_row ) && ( dest_col == to_col ) ); + } + + return false; +} + +/** + * @brief + * + * @param move + * @param board + * @param side the side ( black/white ) whose piece the Move represents + * @return true + * @return false + */ +auto +is_king_taken( Move const& move, Board const& board, Side side ) -> bool +{ + auto const& [to_row, to_col] = move.to; + auto const& dest_piece = board[to_row][to_col]; + + switch ( side ) + { + case Side::white: + return ( dest_piece == 'k' ); + case Side::black: + return ( dest_piece == 'K' ); + default: + throw std::runtime_error( "Error: Unknown Side" ); + } +} + +auto +is_valid( Move const& move, Board const& board ) noexcept -> bool +{ + auto const& [from_row, from_col] = move.from; + auto const& [to_row, to_col] = move.to; + + // out of bounds + if ( to_row < 0 || to_row > 7 || to_col < 0 || to_col > 7 ) + return false; + + auto const& piece = board[from_row][from_col]; + auto const& destination_piece = board[to_row][to_col]; + + return ( ( destination_piece == Empty ) || // empty square + ( is_white( piece ) != is_white( destination_piece ) ) ); // the two pieces are not of the same side +} + + + +// --------------------------------------------- Solver ------------------------------------------- + +auto +Solver::load_board( std::istream& in ) -> bool +{ + board_.clear(); // clear the previous board + + // no input validation required + auto line = std::string(); + + for ( auto i = 0; i < 8; ++i ) + { + std::getline( in, line ); + if ( line.size() ) + board_.push_back( line ); + } + + return ( board_.size() == 8 ); // return false when no more valid boards can be loading from the stream +} + +auto +Solver::solve() -> Move +{ + // generate all moves for white + auto const white_moves = generate_moves( Side::white, board_ ); + + return find_solution( white_moves ); +} + + +// ------------------------------------------------------------------------------------------------ + + +auto +Solver::find_solution( std::vector const& white_moves ) -> Move +{ + // check if a move results in checkmate + for ( auto const& move : white_moves ) + if ( is_checkmate( move ) ) + return move; + + return Move{}; // no solution +} + +auto +Solver::is_checkmate( Move const& white_move ) -> bool +{ + // for each possible white move generate all possible black moves + // if all black moves result in check mate for a specific white move, then return true + + auto const tmp_board = do_move( white_move, board_ ); + + if ( !is_in_check( Side::black, tmp_board ) ) + return false; + + auto const black_moves = generate_moves( Side::black, tmp_board ); + + for ( auto const& black_move : black_moves ) + if ( can_escape( black_move, tmp_board ) ) + return false; // no need to process any more black moves + + return true; +} + + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + + +auto +generate_moves( Side side, Board const& board ) -> std::vector +{ + auto is_side = ( side == Side::white ) + ? [] ( unsigned char ch ) { return std::isupper( ch ); } // white's pieces are capital case + : [] ( unsigned char ch ) { return std::islower( ch ); }; // black's pieces are lowercase + + auto moves = std::vector(); + + for ( auto row = 0u; row < 8u; ++row ) + { + for ( auto col = 0u; col < 8u; ++col ) + { + if ( is_side( board[row][col] ) ) // is it our piece? + { + auto tmp = generate_moves( { row, col }, board ); + moves.insert( moves.end(), + std::make_move_iterator( tmp.begin() ), + std::make_move_iterator( tmp.end() ) ); + } + } + } + + return moves; +} + +auto +generate_moves( Cell const& cell, Board const& board ) -> std::vector +{ + auto const& [row, col] = cell; + + auto const piece = []( unsigned char ch ) { return ( ch != '.' ) ? std::toupper( ch ) : '.'; }( board[row][col] ); + + // if a pawn is castled add moves for both 'Q' and 'N" + switch ( piece ) + { + case 'P': + return pawn_moves( cell, board ); + case 'N': + return move_generator( cell, board, Knight, 1 ); + case 'B': + return move_generator( cell, board, Diagonal, Unlimited ); + case 'R': + return move_generator( cell, board, Cross, Unlimited ); + case 'Q': + return move_generator( cell, board, All_Moves, Unlimited ); + case 'K': + return move_generator( cell, board, All_Moves, 1 ); + default: + throw std::runtime_error( "Error: Unknown Piece" ); + } + + return {}; +} + +auto +move_generator( Cell const& cell, Board const& board, Directions const& directions, int distance ) -> std::vector +{ + auto moves = std::vector(); + + auto const& [row, col] = cell; + for ( auto const& direction : directions ) + { + for ( auto dis = 1; dis <= distance; ++dis ) + { + auto const& [row_dir, col_dir] = direction; + auto const dest = std::make_pair( row + row_dir * dis, col + col_dir * dis ); + auto tmp_move = Move{ cell, dest }; + + if ( is_valid( tmp_move, board ) ) + { + moves.push_back( std::move( tmp_move ) ); + + if ( auto const& target = board[dest.first][dest.second]; target != Empty ) + break; // if we took a piece we can't go any farther in that direction ( the opponents piece is blocking us ) + } + else + break; // a piece is in our way or edge of board; + } + } + + return moves; +} + +auto +pawn_moves( Cell const& cell, Board const& board ) -> std::vector +{ + auto const& [row, col] = cell; + auto const& piece = board[row][col]; + auto const isWhite = is_white( piece ); + + // Special Case: Pawn is castled, add moves for both 'Q' and 'N' + if ( is_castled( cell, piece) ) + { + auto queen = move_generator( cell, board, All_Moves, Unlimited ); + auto knight = move_generator( cell, board, Knight, 1 ); + + queen.insert( queen.end(), std::make_move_iterator( knight.begin() ), std::make_move_iterator( knight.end() ) ); + return queen; + } + + // All other cases: + auto moves = std::vector(); + + // pawn going forward + auto const dir = isWhite ? -1 : 1; + + auto tmp_move = Move{ cell, std::make_pair( row + dir, col ) }; + if ( is_valid( tmp_move, board ) ) + { + if ( board[row + dir][col] == Empty ) // pawn can only move forward to an empty cell + moves.push_back( std::move( tmp_move ) ); + } + + if ( ( isWhite && row == 6 ) || ( !isWhite && row == 1 ) ) // pawn in intial square, can move two squares + { + tmp_move = Move{ cell, std::make_pair( row + 2 * dir, col ) }; + if ( is_valid( tmp_move, board ) ) + if ( board[row + dir][col] == Empty && board[row + 2 * dir][col] == Empty ) + moves.push_back( std::move( tmp_move ) ); + } + + // pawns can move diagonally one square to attack + auto const top_row = row + dir; + auto const top_left_col = col - 1; + auto const top_right_col = col + 1; + auto const& top_left = board[top_row][top_left_col]; + auto const& top_right = board[top_row][top_right_col]; + + if ( top_left != Empty && ( isWhite != is_white( top_left ) ) ) + { + tmp_move = Move{ cell, std::make_pair( top_row, top_left_col ) }; + if ( is_valid( tmp_move, board ) ) + moves.push_back( std::move( tmp_move ) ); + } + + if ( top_right != Empty && ( isWhite != is_white( top_right ) ) ) + { + tmp_move = Move{ cell, std::make_pair( top_row, top_right_col ) }; + if ( is_valid( tmp_move, board ) ) + moves.push_back( std::move( tmp_move ) ); + } + + return moves; +} + +auto +do_move( Move const& move, Board const& board ) -> Board +{ + auto const& [from_row, from_col] = move.from; + auto const& [to_row, to_col] = move.to; + auto const& piece = board[from_row][from_col]; + + // handle special case of pawn being castled + if ( is_castled( move.from, piece ) ) + return do_castling_move( move, board ); + + // all other moves handled here + auto new_board = board; + + new_board[from_row][from_col] = Empty; // now empty + new_board[to_row][to_col] = piece; + + return new_board; +} + +auto +do_castling_move( Move const& move, Board const& board ) -> Board +{ + auto const& [from_row, from_col] = move.from; + auto const& [to_row, to_col] = move.to; + auto const& piece = board[from_row][from_col]; + auto const isWhite = is_white( piece ); + auto new_board = board; + + new_board[from_row][from_col] = Empty; // now empty + + if ( is_knight_move( move ) ) + new_board[to_row][to_col] = ( isWhite ) ? 'N' : 'n'; + + else // queen move + new_board[to_row][to_col] = ( isWhite ) ? 'Q' : 'q'; + + return new_board; +} + +auto +can_escape( Move const& black, Board const& board ) -> bool +{ + auto const tmp_board = do_move( black, board ); + + // need to check if white king is taken + if ( is_king_taken( black, board, Side::black) ) + return true; // black can escape by taking white's king + + // generate white moves and check if any of them result in a black king killed + auto const white_moves = generate_moves( Side::white, tmp_board ); + + for ( auto const& move : white_moves ) // if any of white's potential next moves can take the black king, black's move + { // doesn't result in his escape + if ( is_king_taken( move, tmp_board, Side::white ) ) + return false; + } + + return true; +} + + + +auto +is_in_check( Side side, Board const& board ) -> bool +{ + auto const opponent = ( side == Side::white ) ? Side::black : Side::white; + auto const moves = generate_moves( opponent, board ); + + for ( auto move : moves ) + { + if ( is_king_taken( move, board, opponent ) ) + return true; + } + + return false; +} + +// ------------------------------------------------------------------------------------------------