By Stefan Pohl
Date 2024-10-09 11:26
Edited 2024-10-09 11:30
Upvotes 2
Ich habe mein Tool geupdated, mit dem (auch live) prüfen kann, ob in einem pgn-file mit Partien, die in cutechess-cli oder cutechessGUI gespielt wurden, irreguläre Partien dabei sind. Also timelosses, disconnects oder illegal moves.
Man könnte auch Partien aus anderen GUIs so prüfen, allerdings müßte man dazu ggf. die Suchstrings an die Ausgabe-Gewohnheiten der GUI anpassen. Der Code ist ja zum Glück so primitv, daß er nun wirklich selbsterklärend sein sollte. Die eigentliche Suche findet in den 3 Zeilen statt, die mit dem "for" Befehl anfangen...daher sind diese 3 Zeilen auch ein wenig kryptischer als der Rest. Ich suche immer nach dem String ohne seinen Anfangsbuchstaben, einfach um mögliche Probleme mit Groß- und Kleinschreibung gar nicht erst enstehen zu lassen.
Nun zeigt das Tool nicht nur an, ob Probleme gefunden wurden, sondern auch, wie viele. Es werden also alle timelosses etc. auch gezählt.
Einfach den Code in eine .bat Datei kopieren. Für die Benutzung in Zeile 2 dann den Namen der zu untersuchenden pgn-Datei entsprechend ändern.
Man kann das Tool auch bei einem noch laufenden Test benutzen, das ist das Gute. So sieht man, ob eine Engine ggf. buggy ist. Ich finde das für meinen Test-Alltag sehr praktisch.
@echo off
set games=UHO_Ratinglist_games.pgn
set /A err=0
echo *************************************************
echo *************************************************
echo Investigated file: %games%
echo *************************************************
echo *************************************************
echo Searching for timelosses...
REM *** Search for orfeit, means "time forfeit", without first letter
set /A timelosses=0
for /f "tokens=2,* delims= " %%G in ('find /C "orfeit" %games%') do set /A timelosses=%%H
IF %timelosses% EQU 0 (
echo OK: No timelosses found
) ELSE (
echo ERROR: %timelosses% timelosses found
set /A err=1
)
echo *************************************************
echo Searching for disconnects...
REM *** Search for isconnect, means "disconnect", without first letter
set /A disconnects=0
for /f "tokens=2,* delims= " %%G in ('find /C "isconnect" %games%') do set /A disconnects=%%H
IF %disconnects% EQU 0 (
echo OK: No disconnects found
) ELSE (
echo ERROR: %disconnects% disconnects found
set /A err=1
)
echo *************************************************
echo Searching for illegal moves...
REM *** Search for llegal, means "illegal", without first letter
set /A illegal=0
for /f "tokens=2,* delims= " %%G in ('find /C "llegal" %games%') do set /A illegal=%%H
IF %illegal% EQU 0 (
echo OK: No illegal moves found
) ELSE (
echo ERROR: %illegal% illegal moves found
set /A err=1
)
echo *************************************************
echo *************************************************
echo *************************************************
IF %err%==1 (
echo ERRORS found - check gamesfile manually
) ELSE (
echo All games are OK
)
echo *************************************************
echo Press any key to close window
pause