Si quieres ver algo increíble prueba a jugar una partida de ajedrez rápida contra The Kilobyte’s Gambit de Matt Round, un ajedrez escrito en tan solo 1 KB de JavaScript. Con esa ínfima cantidad de código es capaz de anticipar 4 movimientos y hacer cálculos posicionales en función del valor de las piezas, las zonas del tablero y la «velocidad de captura y movimientos».
¡Ojo cuidao!, que estarás luchando contra este código:
for(B=y=u=b=0,x=10,z=15,I=[],l=[];l[B]=("ustvrtsuqqqqqqqq"+"yyyyyyyy}{|~z|{}@G@TSb~?A6J57IKJT576,+-48HLSUmgukgg OJNMLK IDHGFE").charCodeAt(B)-64,B++<120;I[B-1]=B%x?B/x%x<2|B%x<2?7:B/x&4?0:l[u++]:7);X=(c,h,e,S,s)=>{c^=8;for(var T,o,L,E,D,O=20,G,N=-1e8,n,g,d=S&&X(c,0)>1e4,C,R,A,K=78-h<<9,a=c?x:-x;++O<99;)if((o=I[T=O])&&(G=o&z^c)<7){A=G--&2?8:4;C=9-o&z?l[61+G]:49;do{R=I[T+=l[C]];g=D=G|T+a-e?0:e;if(!R&&(G||A<3||g)||(1+R&z^c)>9&&G|A>2){if(!(2-R&7))return K;for(E=n=G|I[T-a]-7?o&z:6^c;E;E=!E&&!d&&!(g=T,D=T<O?g-3:g+2,I[D]<z|I[D+O-T]|I[T+=T-O])){L=(R&&l[R&7|32]*2-h-G)+(G?0:n-o&z?110:(D&&14)+(A<2)+1);if(S>h||1<S&S==h&&L>2|d){I[T]=n,I[g]=I[D],I[O]=D?I[D]=0:0;L-=X(c,h+1,E=G|A>1?0:T,S,L-N);if(!(h||S-1|B-O|T-b|L<-1e4))return W(I,B=b,c,y=E);E=1-G|A<7|D|!S|R|o<z||X(c,0)>1e4;I[O]=o;I[T]=R;I[D]=I[g];D?I[g]=G?0:9^c:0}if(L>N||!h&L==N&&Math.random()<.5)if(N=L,S>1)if(h?s-L<0:(B=O,b=T,0))return N}}}while(!R&G>2||(T=O,G|A>2|z<o&!R&&++C*--A))}return-K+768<N|d&&N};Y=(V)=>{X(8,0,y,V);X(8,0,y,1)};Z=(U)=>{b=U;I[b]&8?W(I,B=b):X(0,0,y,1)}
El programa es capaz de cumplir con casi todas las reglas del ajedrez; en concreto:
- Enroque
- Captura al paso
- Promoción de peones (pero han de ser siempre a Dama)
- Evita movimientos ilegales
- No anuncia los jaques, ni la victoria/derrota
Tal y como explica su creador es una versión modificada del programa del Nanochess de 1,25 KB de Óscar Toledo –que por aquí hemos comentado alguna vez– con gráficos de Pinot W. Ichwandardi. El código simplemente realiza los cálculos y movimientos; a partir de ahí el motor de gráficos dibuja el tablero (así que eso no cuenta en el kilobyte de JavaScript, obviamente).
Obviamente no tiene un gran nivel y no conoce las aperturas, pero es capaz de no fallar en lo básico y sorprender a los menos duchos en el juego. Así que cuidado que este Gambito de Kilobyte es tan letal como el Gambito de Dama de la serie.
Relacionado:
- Nanochess, Picochess y otros ajedreces minimalistas
- ChesSkelet: una pequeña maravilla en 352 bytes
- Tal vez, el mejor programa jamás escrito: el ajedrez en 1 KB del ZX-81
- DecodeChess: un analizador de posiciones de ajedrez
- El wiki de la programación de ajedrez
- Un IBM 704 jugando al ajedrez en 1958 contra Alex Bernstein
- El problema de ajedrez capaz de «derrotar» a los ordenadores
- El problema de hace 400 años que los ordenadores no pueden resolver
- Ordenadores que juegan al ajedrez en el Museo de las Computadoras
- Los 110 movimientos más fantásticos de ajedrez jamás realizados