Junior promotion patch
authorBalint Pfliegel <balint.pfliegel@gmail.com>
Fri, 11 May 2012 23:01:33 +0000 (00:01 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Fri, 11 May 2012 23:04:17 +0000 (00:04 +0100)
Assumption: Junior sends promotions according to the side to move (ucase/lcase).
Fact: Stockfish generally handles promotion lcase.
Patch: Handling position fen input moves always with lcase promotions.

Ported back by Portfish. No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/misc.h
src/move.cpp

index d6bc26720879748fe01512fb7bc55563023118ab..58646aaf505a7175d9583dbbbbdf56f02774ded5 100644 (file)
@@ -38,7 +38,7 @@ extern void dbg_mean_of(int v);
 extern void dbg_print();
 
 class Position;
-extern Move move_from_uci(const Position& pos, const std::string& str);
+extern Move move_from_uci(const Position& pos, std::string str);
 extern const std::string move_to_uci(Move m, bool chess960);
 extern const std::string move_to_san(Position& pos, Move m);
 
index 7e171f7a6a9bc388d8a7fe4624dd15d9904c9609..62ec7579659817cc6233700f0a44ea9c41f9b3f6 100644 (file)
@@ -17,6 +17,7 @@
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#include <algorithm>
 #include <cassert>
 #include <string>
 
@@ -56,7 +57,10 @@ const string move_to_uci(Move m, bool chess960) {
 /// simple coordinate notation and returns an equivalent Move if any.
 /// Moves are guaranteed to be legal.
 
-Move move_from_uci(const Position& pos, const string& str) {
+Move move_from_uci(const Position& pos, string str) {
+
+  // Some GUIs, like Junior, could send promotion in uppercase
+  std::transform(str.begin(), str.end(), str.begin(), tolower);
 
   for (MoveList<MV_LEGAL> ml(pos); !ml.end(); ++ml)
       if (str == move_to_uci(ml.move(), pos.is_chess960()))