Por @Alvy — 8 de marzo de 2021

The Kilobyte’s Gambit - 1k chess game

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:

Compartir en Flipboard Publicar / Tuitear Publicar