|
@@ -2,7 +2,7 @@ use bitboard::Bitboard;
|
|
use bitboard::Square;
|
|
use bitboard::Square;
|
|
use bitboard::*;
|
|
use bitboard::*;
|
|
use game::Game;
|
|
use game::Game;
|
|
-use hash::Cache;
|
|
|
|
|
|
+use hash::{Cache, EntryType};
|
|
use log::info;
|
|
use log::info;
|
|
|
|
|
|
pub type Side = bool;
|
|
pub type Side = bool;
|
|
@@ -205,7 +205,15 @@ pub fn sort_moves(game: &Game, hash: &mut Cache, move_list: &mut Vec<Move>) {
|
|
move_list.sort_by_cached_key(|mov| {
|
|
move_list.sort_by_cached_key(|mov| {
|
|
let new_game = crate::search::apply_move(game, *mov);
|
|
let new_game = crate::search::apply_move(game, *mov);
|
|
if let Some(e) = hash.lookup(&new_game) {
|
|
if let Some(e) = hash.lookup(&new_game) {
|
|
- return e.value;
|
|
|
|
|
|
+ if let EntryType::Value = e.entry_type {
|
|
|
|
+ return e.value;
|
|
|
|
+ }
|
|
|
|
+ else if let EntryType::LowerBound = e.entry_type {
|
|
|
|
+ return e.value + 1000;
|
|
|
|
+ }
|
|
|
|
+ else if let EntryType::UpperBound = e.entry_type {
|
|
|
|
+ return e.value - 1000;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
return crate::evaluate::evaluate(&new_game);
|
|
return crate::evaluate::evaluate(&new_game);
|