Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / V2 meines Tools um irreguläre Partieenden in cutechess zu finden
- - 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
Parent - By Volker Pittlik Date 2024-10-10 07:15 Edited 2024-10-10 07:37 Upvotes 1
Ich benutze etwas ähnliches in Linux. Es geht auch im WSL unter Windows (hier als "grepsen.sh" in ~/bin gespeichert):
Code:
#!/bin/bash
#
# Suche nach beliebigen Strings in beliebigen Dateien.
# Die Ausgaben von grep lassen sich durch ">" in eine beliebige Datei umleiten.
# Das Skript läuft auch in WSL unter Windows
#
# "irgeneine" durch den Namen der zu prüfenden Datei ersetzen
Dateiname=irgendeine
# Beispiel: Dateiname=/mnt/c/Users/volkerp/Schach/Tests/pgn_mit_Fehler.pgn
#
grep "on time" $Dateiname
grep "error" $Dateiname
grep "illegal" $Dateiname
grep "disconnects" $Dateiname
grep "wonach auch immer man suchen will" $Dateiname
#


Das ergibt beispielsweise solchen Output:
Code:
volker@W11-231202:~/bin$ uname -a
Linux W11-231202 5.15.153.1-microsoft-standard-WSL2 #1 SMP Fri Mar 29 23:14:13 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
volker@W11-231202:~/bin$
volker@W11-231202:~/bin$ grepsen.sh
Nf6 {-0.07/5 0.88s, White loses on time} 0-1
volker@W11-231202:~/bin$


Das "uname -a" kann man sich natürlich sparen, es dient hier nur zur Doku.

Volker
Up Topic Hauptforen / CSS-Forum / V2 meines Tools um irreguläre Partieenden in cutechess zu finden

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill