skip to main | skip to sidebar
13 commenti

Scacchi minimalisti in 487 byte

L'articolo è stato aggiornato dopo la pubblicazione iniziale.

In un'epoca nella quale le dimensioni dei videogiochi e del software in generale si misurano in gigabyte, c'è ancora chi insegue la strada del minimalismo e si cimenta in sfide che sembrano impossibili: scrivere un intero videogioco in meno di mille byte. Per intenderci, mille byte sono circa sei SMS.

Se volete un termine di paragone diverso, considerate che il paragrafo che state leggendo è lungo esattamente 487 caratteri: non è un numero scelto a caso, perché è la lunghezza complessiva di un intero programma per il gioco degli scacchi, denominato BootChess e scritto da Baudsurfer, che ha finalmente battuto il record per il videogioco di scacchi più compatto del mondo dopo 32 anni: il primato precedente, 672 byte, risale infatti al 1983 e spettava a un programma per ZX-81.

Non aspettatevi che BootChess vi offra grafica iperrealistica 3D: la sua interfaccia è assolutamente minimalista (soltanto una griglia di caratteri che rappresentano i pezzi e le loro posizioni). Ma in 487 byte contiene tutte le principali regole di un gioco complesso come gli scacchi. BootChess è disponibile per Windows, Linux, OS X, DOS e BSD. Non è un campione di bravura, ma dimostra la bravura del suo creatore. E se questo genere di virtuosismo può sembrare inutile, tenete presente che ci sono ambienti, come i veicoli spaziali o i dispositivi di sicurezza delle automobili, nei quali saper essere concisi, veloci ed efficienti è assolutamente vitale.


Correzione: la prima stesura di quest'articolo indicava che il precedente detentore del record era un programma per ZX Spectrum; in realtà era per ZX-81.
Invia un commento
I commenti non appaiono subito, devono essere tutti approvati da un moderatore. Lo so, è scomodo, ma è necessario per tenere lontani scocciatori, spammer, troll e stupidi: siate civili e verrete pubblicati qualunque sia la vostra opinione; gli incivili di qualsiasi orientamento non verranno pubblicati, se non per mostrare il loro squallore.
Inviando un commento date il vostro consenso alla sua pubblicazione, qui o altrove.
Maggiori informazioni riguardanti regole e utilizzo dei commenti sono reperibili nella sezione apposita.
NOTA BENE. L'area sottostante per l'invio dei commenti non è contenuta in questa pagina ma è un iframe, cioè una finestra su una pagina di Blogger esterna a questo blog. Ciò significa che dovete assicurarvi che non venga bloccata da estensioni del vostro browser (tipo quelle che eliminano le pubblicità) e/o da altri programmi di protezione antimalware (tipo Kaspersky). Inoltre è necessario che sia permesso accettare i cookie da terze parti (informativa sulla privacy a riguardo).
Commenti
Commenti (13)
fantastico :D ricordo un mio amico che si era auto-programmato un mastermind da calcolatrice... e riguardo ai dispositivi spaziali e di sicurezza altra caratteristica che richiedono i relativi programmi, oltre a veloci, efficienti, e concisi, è che non si inchiodino, blocchino mai. Sì, i sistemi ridondanti sopperiscono un pochetto a questo evenienza, ma ricordiamoci per esempio il malfunzionamento dell'altimetro radar nell'Apollo 11 durante l'allunaggio (forse anche nel 12, ma non ne sono sicuro).
Un utente che si firma "Ham"m il nome nel profilo è "Hector Alacorn" ha fatto notare che il programma permette mosse illegali ai cavalli, permette di muovere i re nel dominio avversario e non permette l'arrocco.

Se il "mastodontico" programma di 672 byte propone tali aspetti, direi che non si può parlare di record infranti; è possibile che tali caratteristiche avessero richiesto più di 185 bytes, ed è altrettanto possibile che implementare tali caratteristiche richieda più di 185 caratteri.

Mi trovo d'accordo con la sua obbiezione: il record per il più piccolo programma di scacchi andrebbe ad un programma più piccolo di 672 bytes che segue effettivamente le regole degli scacchi senza richiedere attenzione da parte degli utenti sul rispetto di certe regole quali il divieto di suicidare il re. (I primi videogiochi talvolta richiedevano agli utenti l'osservazione delle regole nel mondo reale, ad esempio ci sono stati programmi di pong in cui era affidato ai giocatori lo stabilire le condizioni di vittoria e tener conto dei punti.)
Scacchi in 487 byte? Assurdo.
Credevo che neanche nei canonici 4K della contest java si potesse.
1K ZX-Chess non è per ZX Spectrum, ma per il suo immediato predecessore ZX81.


@puffolottiaccident: non saprei dire sulle mosse illecite, ma ZX-Chess di sicuro non consente l'arrocco (e nemmeno la promozione).
Ci sarebbe una piccola correzione da fare: il programma di 672 byte del 1983 è per ZX-81, non per Spectrum.
Pensa la combinazione che stavo proprio facendo vedere ieri qualche video di capture delle intro e delle demo dei vecchi party Assembly. Anche quelli sono del tutto incredibili.

Tra l'altro ciò mi riporta alla memoria che ai tempi smanettavo anch'io in assembler e avevo fatto un paio di demo (ovviamente non di quel livello)... Non me lo ricordavo più! (no, non che avevo fatto le intro, non mi ricordavo più che una volta avevo del tempo libero auau) Quasi quasi vado a rovistare tra i vecchi backup per vedere se lo ritrovo... appena ho tempo. Sigh.
Purtroppo l'ottimizzazione del codice è una pratica poco diffusa ed incoraggiata, con la scusa che ormai si hanno giga di RAM, Tera di spazio e processori multicore sempre più potenti tutto è concesso; chissà cosa potrebbero fare i computer attuali se i programmi fossero ancora ottimizzati come all'inizio dell'era dell'informatica.
ma in che linguaggio è stato scritto ?
In ASM o in C ? oppure è una riduzione postprocessore ?
Comunque questo mi fà ricordare il Basic Altair in 4k di "zio" Bill
Suggerisco di tenere d'occhio i commenti sul sito di Baudsurfer, questa notizia sta avendo una risonanza notevole (vedi slashdot, bbc, der spiegel...) e nei commenti si sta prefigurando una guerra tra nerd programmatori :D
Quindi onore alle capacità tecniche dei contendenti, ma non mi sentirei tranquillo sapendoli al lavoro sul codice di un veicolo spaziale! O_o
Applaudo, ammiro e riverisco chi sa ottimizzare il codice, tuttavia l'ottimizzazione impedisce, (per non dire "vieta") la condivisione del codice.
Sto parlando di casi del tutto diversi dall'intenzione di infrangere un record di compattezza.

Personalmente sono un sostenitore del codice chiaro ed agevolmente riutilizzabile dagli "infanti".
Un codice non ottimizzato all'estremo può fornire spunti pedagogici a degli "eredi" e favorire lo scambio, l'evoluzione delle idee e promuovere il progresso in generale.

Poi se uno vuole incasinare la lettura del codice per nascondere le proprie soluzioni così come le case discografiche vogliono impedire le copie illegali... è un suo preciso diritto su una proprietà intellettuale che gli appartiene.
Puffolotti: non riesco a cogliere il nesso tra ottimizzazione e disponibilità dei sorgenti. Se caso il problema è che quel codice sarà cucito su misura di una certa architettura (peggio: solo per alcune CPU di quella architettura) ma per il resto un file .asm è come un file .c: un file di testo =)
A rivedere il giornale con il codice in assembler ho avuto un moto di sincera commozione
@Fx

Si, ma io sono stupido e superstizioso.
Quando vedo un asso di picche prendo paura.