Check out Grant Acedrex, our featured variant for April, 2024.


[ Help | Earliest Comments | Latest Comments ]
[ List All Subjects of Discussion | Create New Subject of Discussion ]
[ List Earliest Comments Only For Pages | Games | Rated Pages | Rated Games | Subjects of Discussion ]

Single Comment

Schoolbook. 8x10 chess with the rook + knight and bishop + knight pieces added. (10x8, Cells: 80) [All Comments] [Add Comment or Rating]
💡📝Sam Trenholme wrote on Sun, Sep 27, 2009 01:29 AM UTC:
OK, I’m starting to get some results sorted by opening. What I’ve been doing is having Joker80 play itself a whole bunch of 40-moves-in-10-seconds games against itself, as described earlier in this thread. I have now taken the results of those games and have some win/loss/draw ratios for the games.

Sometimes, one of the sides loses on time. Since it is a little more complicated to adjudicate such a game to see who had the better position when the flag fell, I have simply discarded any game which does not end with a draw or a checkmate (Joker80, unlike TJChess10x8, never resigns).

Once I did this, here is the win/loss/draw statistics I have so far for Joker80 playing Schoolbook Chess against itself with a 40 moves in 10 seconds time control:

e4 Win: 51.6556% Loss: 38.4106% draw 9.93377% Total 151
f4 Win: 51.4019% Loss: 41.1215% draw 7.47664% Total 107
f3 Win: 52.381% Loss: 33.3333% draw 14.2857% Total 63
c4 Win: 44.2623% Loss: 40.9836% draw 14.7541% Total 61
c3 Win: 38.8889% Loss: 50% draw 11.1111% Total 18
h3 Win: 100% Loss: 0% draw 0% Total 2
Ni3 Win: 100% Loss: 0% draw 0% Total 1
Total Win: 50.3722% Loss: 38.9578% draw 10.67% Total 403

For people who are interested, I will include the sh and awk script I use (no Perl because I’m using MSYS, which doesn’t have Perl or Python or anything really fancy) to take the pgn files and convert them in to the above table (note: All single quotes in the awk scripts are double quotes; the only actual single quotes in the script are used to start and end the given awk script):
#!/bin/sh

awk '{

	l=$0;
	sub(/\[.*\]/,'',l);
	# Get opening move
	if(match(l,/^1\./)) {
		sub(/{.*/,'',l);
		sub(/^1\.[ \t]*/,'',l);
		sub(/[ ]+.*$/,'',l);
		opening=l
	}
	# Tally up wins and losses
	if(match(l,/Checkmate/) || match(l,/mates/) || match(l,/resign/)) {
		sub(/{.*}[ ]*/,'',l);
		if(match(l,/0\-1/)) {
			loss[opening]++;
		} else if(match(l,/1\-0/)) {
			win[opening]++;
		}
		opening = 'invalid'
	}
	# Tally up draws
	if(match(l,/1\/2\-1\/2/)) {
		draw[opening]++
		opening = 'invalid'
	}
}

END {
	for(a in win) {
		print 'W Opening ' a ' won ' win[a] ' times.'
	}
	for(a in loss) {
		print 'L Opening ' a ' lost ' loss[a] ' times.'
	}
	for(a in draw) {
		print 'D Opening ' a ' drew ' draw[a] ' times.'
	}
}' | awk '# Tally total results by opening
	{result = $1; opening = $3; times = $5; 
		tally[opening] = tally[opening] ' ' result ' ' times;
		total[opening] += times;
	}
	END { for(o in tally) {
		print o ' ' tally[o] ' T ' total[o]
	} }' | awk '# Make percentage win/los/draw
	{
		opening = $1

		for(a in z) { delete z[a]; }

		for(a=2;a<=NF;a++) {
			if(a % 2 == 0) {
				d = $a
			} else {
				z[d] = $a
			}
		}

		if(z['T'] > 0) {
			t = z['T'];
			if(t != 0) { 
				w = z['W'] / t;	
				l = z['L'] / t;	
				d = z['D'] / t;	
				w *= 100; l *= 100; d *= 100;
				tt += z['T']; tw += z['W']; 
				tl += z['L']; td += z['D'];
			}
		 print opening ' Win: ' w '% Loss: ' l '% draw ' d '% Total ' t
		}
	}

		END {
		 if(tt != 0) {
		 	tw = tw / tt; tw *= 100;
		 	tl = tl / tt; tl *= 100;
		 	td = td / tt; td *= 100;
		}
		 print 'Total Win: ' tw '% Loss: ' tl '% draw ' td '% Total ' tt
	}'