Newsgroup: it.hobby.scacchi
Titolo: Algoritmo del cavallo... Alex, toc toc?

Gentile signor Grassi,
sono uno studente al primo anno di informatica alla Federico II di Napoli
 e vorrei avere chiarificazioni per quanto riguarda l'algoritmo dei
movimenti 
di un cavallo sulla scacchiera. Il cavallo puo'  fare massimo 8 movimenti
se sta al centro minimo 2 se si trova in un angolo.
Ma come faccio a restituire le celle in cui può andare?
Qualcuno puo' dare una mano a questo ragazzo che mi ha scritto tramite
ScaccoWeb?
Rob
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Secondo me dipende da che struttura dati è stata scelta per la
rappresentazione della scacchiera. Se tale scelta è ricaduta su una matrice
allora il gioco è semplice. Basta partire dalla casella centrale. Per lo
spostamento a destra di 2 e poi sotto di 1 basta sommare 2 all'indice di
riga e sommare 1 a quello della colonna. Per gli altri spostamenti si
procede allo stesso modo. Parlo della sola casella centrale perchè se il
tutto si fa in java si può semplicemente trattare l'eccezione che salterebbe
fuori se il cavallo esce fuori scacchiera!!! Ciao.

 Ma come faccio a restituire le celle in cui può andare?
Immagino che il suo problema non sia codificare il movimento di un cavallo
in generale (altrimenti ha scelto la facoltà sbagliata!) ma risolvere il
problema
del "Tour del Cavallo".
http://www.borderschess.org/KnightTour.htm
Qui trova tutte le info di cui ha bisogno ma spero provi a risolverlo da
solo.
Saluti, Adriano

 del "Tour del Cavallo".
Da quello che si capisce dalla lettera sembrerebbe proprio la prima che hai
detto...
In questo caso, come precisa Jonny dipende dalla rappresentazione dei dati
scelta.
Ipotizzando una matrice bidimensionale da 0 a 7 per la scacchiera, un
algoritmo semplice è, date x, y le coordinate del Cavallo:
for i=-2  to 2
 for j=-2 to 2
  if (|i| <> |j|) and (i*j <> 0) and (x+i in [0..7]) and (y+j in [0..7])
then mossa = da x,y a x+j,y+k
Facilmente adattabile a qualsiasi linguaggio.
Alex

 then mossa = da x,y a x+j,y+k
Svista, è da intendersi " a x+i, y+j ".
Alex

In un libro, non ricordo quale, mi pare quello di kasparov, ho trovato una
definizione del movimento del cavallo pazzesca:
il cavallo muove a due caselle di distanza dalla casella che occupa, in una
casella che non possa essere raggiunta dalla donna partendo dalla stessa
casa del cavallo!!!!!!!!!!!!
E' vero!!!!!!!
PLP

Non voglio essere eccessivamente cattivo, ma è una definizione così banale
che un tipo come Kasparov se la poteva risparmiare!! Ciao!!



 che un tipo come Kasparov se la poteva risparmiare!! Ciao!!
Mmmm... Secondo me non esistono le definizioni banali. Le definizioni sono
giuste o sono sbagliate. Questa, non e' sbagliata... per quanto strana e
inutile possa sembrare.
ciao,
Carlo

Vebbè, se ci mettiamo a fare filosofia facciamola. Comunque la definizione
nn solo è banale, ma anche inutile!! E' come dire: la regina arriva dove può
arrivare la torre e l'alfiere!! Solamente che tale affermazione l'ho detta
io e nn serve a nulla. L'altra l'ha detta Kasparov ed è originale!!!

 ha scritto nel messaggio
news:b1hmim$j5t$1...@lacerta.tiscalinet.it...

Ma questa definizione è sbagliata!
Supponiamo un cavallo in e4 e un pezzo qualsiasi in d5.. secondo la
definizione, il cavallo potrebbe muovere in c6, perché una donna messa in e4
non potrebbe raggiungere quella casa...
ciao,
Claudio

 io e nn serve a nulla. L'altra l'ha detta Kasparov ed č originale!!!
Ora non ricordo se fosse Kasparov, o forse Capablanca. Non importa.
Pero' io l'ho trovata molto bella e originale, anche se forse un po'
astrusa...
Sicuramente non banale.
PLP

 ha scritto
nel messaggio news:Dsa%9.11409$YL4....@tornado.fastwebnet.it...

Saro' io che l'ho riportata male.
Il diagramma che l'accompagnava era chiaramente a scacchiera vuota, stiamo
parlando di un libro, non ricordo il titolo, dedicato proprio ai
principianti che neanche conoscono le regole del gioco.
Insomma la definizione era giusta.
PLP

inutile possa sembrare
avevo focalizzato l'attenzione sul fatto che Jonny dichiarava banale la
definizione.
Non volevo entrare nel merito della veridicità della definizione stessa (e
casomai ho fatto male ad affermare "Questa non e' sbagliata", avrei infatti
dovuto dire: "Questa non sembra sbagliata"). Bene, ad una analisi piu'
dettagliata la definizione mi sembra proprio sbagliata. Ma questo non vuol
dire (insisto) che sia banale. E non sto facendo della filosofia.
La definizione di solito e' uno strumento per successivi scopi; se permette
di raggiungerli e' esatta, altrimenti e' sbagliata. Non vedo come si possa
applicarle l'aggettivo 'banale' che indica ciò che è convenzionale,
assolutamente comune, privo di originalità e di significato particolare
(persona, conversazione banale; libro, film banale; si tratta di un banale
incidente).
La definizione quindi può essere: imprecisa, inesatta, incompleta, oscura,
oppure esauriente, chiara ecc. ma mai banale.
Le definizioni permettono di (dallo Zanichelli):
1 Precisare, fissare i limiti: la Costituzione definisce il potere degli
organi legislativi; formulare un problema è definirne i termini (CROCE).
2 Determinare la natura di un concetto attraverso un'attenta analisi delle
sue componenti e mediante la formulazione in termini appropriati: i concetti
si definiscono, gli oggetti si descrivono (e la descrizione, questa si',
puo' essere banale); è difficile definire che cosa è la bellezza; mi
definisca il reato di furto; non riesce a definire il sentimento che prova;
le parole definiscono le cose (BACCHELLI) | Spiegare il significato di una
parola: definire un vocabolo | Definire una persona, descriverne le qualità
e i difetti.
3 Risolvere, terminare: definire una lite, una questione.
Tornando al caso in questione (il movimento del Cavallo negli scacchi),
supponiamo di voler usare quella definizione per costruire un algoritmo
matematico che permetta, ad esempio ad un programma su computer di muovere
il cavallo, sarebbe possibile cio'? La risposta e' si (viene definito il
raggio d'azione del cavallo e le case che gli sono proibite, quelle che
rimangono vanno bene) quindi cosa significa dire che la definizione e'
banale? E se poi salta fuori che il cavallo puo' andare da e4 a c6 significa
che la definizione e' sbagliata, non banale.
Infine, tengo a precisare, quando mi trovo davanti una affermazione per
prima cosa cerco di valutarla indipendentemente da chi proviene, sia egli lo
sconosciuto Jonhny o il famoso Kasparov.
ciao,
Carlo

Io avrei detto " Il C si muove ai vertici opposti di un rettangolo di 3x2
case"... =8^D
Massimo Paolini

...

Boh. Io dico che il cavallo si muove a salto di cavallo. Definizione
semplice, precisa, inequivocabile, che ogni scacchista con elo
superiore a 1500 sa interpretare.
Per chi non e' scacchista o per chi e' computer, suggerisco una bella
tabellozza che spreca notevolmente memoria ma e' estremamente
efficace:
si tratta di definire una matrice di destinazioni possibili per
ciascuna delle 64 caselle.
Si ottiene un array di 64*8=512 elementi.

superiore a 1500 sa interpretare.
Come la mela, che è un frutto che assomiglia terribilmente ad una mela...