Sunday, October 11, 2009

Programación y ajedrez

El verano del 2008 comencé a programar un motor de ajedrez en C, que probablemente será un chimpacé al lado de cualquier otro motor. Aún no lo termino, pues le dedico tiempo solo los veranos y unos escazos días.
En los primeros programas de ajedrez el tablero se representaba usando un arreglo, luego se comenzó a usar una técnica que revolucionó el mundo del ajedrez, los bitboards.
Un bitboard es una representación del tablero usando un entero de 8 bytes, dado que cada byte tiene 8 bits se pueden representar los 64 casilleros del tablero con un bitboard.
La ventaja de esta representación es que los cálculos son mucho menos costosos en memoria y CPU porque un bitboard pesa mucho menos que un arreglo de 64 carácteres y se usan operaciones a nivel de bit como el AND,OR,XOR y shift para muchos de los cálculos.

Verificar si un casillero del tablero se encuentra ocupado por una pieza usando bitboards:

typedef uint64_t bitboard;
...
/* square number 0-63 (a1-h8) */
int isOccuped(bitboard board, int square) {

if( board & (1<< square) ) {
return 1;
}
return 0;
}

Para revisar si una casilla del tablero esta ocupada usando un arreglo tendriamos que recorrer el arreglo e ir revisando casilla por casilla, lo cual resulta más costoso y menos elegante.

6 comments:

Anonymous said...

SEO

1) Optimizar el titulo para los motores de búsqueda, en ves de "Programación y ajedrez" poner "Programar un motor de ajedrez, ¿Que es un bitboard?"

2) Recalcar en negrita las palabras claves que le sirvan a los motores de búsqueda, como podrían ser: "motor de ajedrez", "C"(si es posible "lenguaje c"), "bitboard", "Verificar si un casillero del tablero se encuentra ocupado por una pieza usando bitboards", arreglo.

3)Ordenar el contenido de forma rectangular.
Así No:
dsffdfddsd
fsdfsfsd
fsdfsfdsd
fsfsdf

Así Si:
sss df fs
sd sdf ds
sdfs sdf
fdds sd d

Mas información: http://programacion-x.freevar.com/programacion-x/index.php/component/content/article/42-joomla/70-joomla-trucos-y-tips-para-mejorar-el-posicionamiento-en-los-motores-de-busqueda-seo.html

Anonymous said...

No quedo rectangular xD

saludos notosil !!

Juan Reyes said...
This comment has been removed by the author.
Juan Reyes said...

jajajjajaja gracias por los consejos, veré si hago caso de alguno, depende de como se vea.

Anonymous said...

notosil ?

Juan Reyes said...

Post a Comment