Newsgroup: it.comp.lang.c++
Titolo: 8?  regine

mi hanno fatto una domanda nel senso di codice  su una
scacchiera  8 regine  non devono mangiarsi fra loro come si fa


Non lasciarle troppo a digiuno.....

 scacchiera  8 regine  non devono mangiarsi fra loro come si fa
Beh una maniera, sicuramente non la più efficiente,
è quella di provare esustivamente ad inserire 
una regina alla volta in tutte le posizioni.
Esempio:
---------------
REG1 in A1
REG2 ?? provo (A1->A8,B1->B8) ===>> B3
...
---------------
REG1 in A2
...
---------------
e così via.
Naturalmente ti devi fare una funzione per trovare le posizioni 
accettabili e qlcs'altro.
Cmq questo è un problema che gira se cerchi sicuramente trovi
una sol + efficiente.
CIAO,
LMS


E' un problema che propongono alle scuole superiori.
Se cerchi con google le parole 'backtracking' 'queen' troverai molti
risultati utili.
Intanto prova:
http://www.tvcc.cc.or.us/staff/fuller/cs260b/cs260b/week5/week5.html
Ciao
Fabio


hahahahahahahaha
ROTFL!



Problema piuttosto banale anche da un punto di vista implementativo.
Basta ricordare che in una direzione avanzi di una casella, nell'altra
di due; aggiungi il rientro per quando esci dalla scacchiera e il
gioco e' fatto!!
--
Ciao!
Luca Menegotto

 scacchiera  8 regine  non devono mangiarsi fra loro come si fa
#include <cstdio>
int main(void) {
    printf("QQ--  --  --  --\n");
    printf("--  --  QQ  --  \n");
    printf("  --  --  --  QQ\n");
    printf("--  --  --QQ--  \n");
    printf("  --QQ--  --  --\n");
    printf("--  --  --  QQ  \n");
    printf("  QQ  --  --  --\n");
    printf("--  --QQ--  --  \n");
    return 0;
}


Veramente quella e' la mossa del cavallo.
Le regine muovono in orizz. o vert. o diag. di quante caselle
vogliono.
ciao,
g.

vogliono.
Occhio, io ho detto come vanno disposte le regine, non come si
muovono.
Proprio perche' la mossa del cavallo e' l'unica che le regine non
possono fare, questo e' l'unico modo per cui ciascuna non mangi le
altre. Una delle disposizioni possibili e': A1, C2, E3, G4, B5, D6,
F7, H8. Prova e poi vedi!! :))))
--
Ciao!
Luca Menegotto

vogliono.
Ho capito il fraintendimento. Cio' che intendevo io non era la mossa
della regina. Voleva essere uno pseudo algoritmo....
--
Ciao!
Luca Menegotto

 scacchiera  8 regine  non devono mangiarsi fra loro come si fa
Il  programma, praticamente è questo:
    int nr = 8;                            // 8 regine
    for (i = 0; i < nr; i++)        // posiziona tutte le regine nella prima
riga
        a[i] = 0;
    i = 1;                                // comincia dalla seconda regina
    do {
        if (!controllo(i))  {        // se interferisce con le altre regine
            i = avanza(i);            // fai avanzare la regina che
interferisce
        } else if (i < nr - 1)        // tutto ok; è l'ottava regina?
            i++;                            // verifica la successiva
        else {
          stampa();                    // una soluzione. Stampala
          i = avanza(i);        // riposiziona per trovare la successiva
        }
   } while (a[0] < nr);            // ripeti finché la prima regina non si
trovi alla fine
La funzione controllo() deve verificare se qualche regina si trova nella
stessa riga o colonna o diagonale. La funzione avanza() sposta la regina una
posizione avanti (nella stessa colonna); nel caso sia arrivata alla fine, la
riposiziona all'inizio e fa avanzare la regina precedente.
Se tutto va bene, dovrai trovare 92 soluzioni. Molte di queste soluzioni si
ottengono per simmetria rispetto ad altre. Solo 35 sono le soluzioni ok,
dalle quali si ottengono tutte le altre per simmetria.
Maurizio.

 scacchiera  8 regine  non devono mangiarsi fra loro come si fa
Il  programma, praticamente è questo:


 scacchiera  8 regine  non devono mangiarsi fra loro come si fa
Sulla lista devel di FerraraLUG le regine sono state recentemente al centro
di un lungo thread in cui sono stati confrontati vari linguaggi di
programmazione, incluso C++.
http://liste.ferrara.linux.it/archive/devel/2004-July/thread.html
HTH

...

Forse sbaglio ma mi sembra che A1 e H8 non vadano proprio troppo d'accordo.
Ciao, LMS