[Python] R: R: La matrice immortale.
Gabriele Battaglia
iz4apu a libero.it
Mer 9 Lug 2014 09:23:55 CEST
Marco Beri: In realtà io la scacchiera non la creerei proprio.
Mi bastano i 32 pezzi e le relative posizioni.
La scacchiera serve solo visivamente per l'utente, quindi andrebbe solo
disegnata all'uopo e non usata per il motore interno.
Secondo me, ovviamente :-)
GB: ciao marco.
In realtà, la scacchiera, intesa come una matrice 8x8, nei programmi di
scacchi è necessaria. Di più, per una singola partita, i motori scacchistici
creano molteplici scacchiere su cui memorizzano non solo la posizione dei
pezzi, ma anche i valori di ogni casa in base agli attacchi ed alle difese che
questa riceve dai pezzi nemici e da quelli amici. Ogni casa poi, ha dei valori
fissi che si sommano o si sottraggono a quelli variabili dati dai pezzi, che
dipendono dalla sua posizione, più è centrale e più è ambita, e dalla
vicinanza del re (entropia del re).
Quindi, per valutare la prossima mossa, il software deve poter provare le
combinazioni su diverse rappresentazioni numeriche della stessa scacchiera e
tracciare un albero di quelle che gli sembrano più convenienti. Poi taglierà i
rami che sembrano portare a svantaggi, ed approfondirà quelli buoni creando
altri rami e sottorami di ricerca, tutto questo, sfruttando il tempo massimo
che, in base alle impostazioni di gioco, gli viene concesso per ogni possibile
mossa.
Una considerazione più generale. Alcuni amici programmatori affermano che
Python non sia la scelta migliore, per un motore di scacchi, ma sia di gran
lunga preferibile il C. In un motore di scacchi, il fattore determinante è la
velocità.
Come viene poi visualizzata la scacchiera, sono facezie, in genere i motori
prevedono un protocollo (UCI) o (WinBoard) per comunicare con interfacce
grafiche che si occupano della visualizzazione, loro sono dediti solo al
calcolo.
Uno dei motori più forti al mondo, ed anche gratuito (in una delle sue
versioni), si chiama Houdini 15A, è semplicemente devastante, riesce a
raddrizzare delle situazioni disperate, non molla mai!
:)
Tu: P.s. Perdonatemi il "visivamente", credo di essermi spiegato comunque.
GB: la lingua italiana è universale, non può piegarsi alle esigenze dei
singoli, altrimenti non sarebbe più un codice condiviso. Questo "problema"
degli aggettivi o dei vocaboli da usare o non usare, è una cosa che solo i
vedenti si pongono: nella mia vita non mi è mai venuto in mente, ne ho mai
sentito altri ciechi lamentarsi per un riferimento alla vista da parte di chi
parla con noi. Daltronde, guarda che storia, io in questa lista dico cose come
programmo, scrivo una funzione, studio una classe... :) dovrei essere linciato
allora. :)
Ciao.
Maggiori informazioni sulla lista
Python