00001 /* moveLogProbSet.h 00002 */ 00003 #ifndef _MOVELOGPROBSET_H 00004 #define _MOVELOGPROBSET_H 00005 00006 #include "osl/container/linearMoveMap.h" 00007 #include "osl/moveLogProb.h" 00008 00009 namespace osl 00010 { 00011 namespace container 00012 { 00013 struct MoveLogProbSet : public LinearMoveMap<MoveLogProb> 00014 { 00019 bool assignIfBetter(const MoveLogProb& move, int margin=0) 00020 { 00021 MoveLogProb *recordedMove = find(move.getMove()); 00022 if (recordedMove) 00023 { 00024 // ˤ⤤Ψμ꤬äƤϿʤ 00025 // 㤤ΨμϾ 00026 if (recordedMove->getLogProb() <= move.getLogProb() + margin) 00027 return false; 00028 *recordedMove = move; 00029 } 00030 else 00031 { 00032 insertNoCheck(move); 00033 } 00034 return true; 00035 } 00036 }; 00037 00038 } // namespace container 00039 using container::MoveLogProbSet; 00040 } // namespace osl 00041 00042 00043 #endif /* _MOVELOGPROBSET_H */ 00044 // ;;; Local Variables: 00045 // ;;; mode:c++ 00046 // ;;; c-basic-offset:2 00047 // ;;; End: