Problèmes des n reines sur un echiquier n *n
Résolu/Fermé
pipleton
Messages postés
23
Date d'inscription
vendredi 21 janvier 2011
Statut
Membre
Dernière intervention
15 juin 2012
-
9 févr. 2011 à 13:10
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 - 10 févr. 2011 à 14:15
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 - 10 févr. 2011 à 14:15
A voir également:
- Problèmes des n reines sur un echiquier n *n
- La reine des neige - Forum YouTube
- La reine des neiges - Forum Lecteurs et supports vidéo
- Télécharger musique reine des neiges mp3 gratuit ✓ - Forum Création et production musicale
- Télécharger la reine des neiges 1 le film en entier en français complet gratuit - Télécharger - Streaming vidéo
- Téléchargements gratuits de film et dessin a. ✓ - Forum Cinéma / Télé
15 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 9/02/2011 à 16:26
Modifié par lermite222 le 9/02/2011 à 16:26
Et moi Je ne comprends pas le raisonnement employer pour arriver à ces résultats.
EDIT :
Si ont prend ton dernier exemple...
1 0 1 0
0 1 0 0
0 0 0 1
0 0 0 0
conflit = 3
Moi je verrais..
Conflit 1 > A1/B2
Conflit 2 > C1/B2
Conflit 3 > B2/A1
Conflit 4 > B2/C1
??
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
EDIT :
Si ont prend ton dernier exemple...
1 0 1 0
0 1 0 0
0 0 0 1
0 0 0 0
conflit = 3
Moi je verrais..
Conflit 1 > A1/B2
Conflit 2 > C1/B2
Conflit 3 > B2/A1
Conflit 4 > B2/C1
??
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
9 févr. 2011 à 16:36
9 févr. 2011 à 16:36
re
pour comptage à la main, sur l'exemple
1 0 1 0
0 1 0 0
0 0 0 1
0 0 0 0
on note (ligne, colonne) les coordonnées
- reine (1,1) en conflit avec (1,3), et (2,2)
- reine (1,3) en conflit avec (1,1) et (2,2)
- reine (2,2) en conflit avec (1,1) et (1,3)
- reine (3,4) en conflit avec personne
donc 6 conflits orientés
et 3 conflits non orientés
pour comptage à la main, sur l'exemple
1 0 1 0
0 1 0 0
0 0 0 1
0 0 0 0
on note (ligne, colonne) les coordonnées
- reine (1,1) en conflit avec (1,3), et (2,2)
- reine (1,3) en conflit avec (1,1) et (2,2)
- reine (2,2) en conflit avec (1,1) et (1,3)
- reine (3,4) en conflit avec personne
donc 6 conflits orientés
et 3 conflits non orientés
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 9/02/2011 à 19:08
Modifié par lermite222 le 9/02/2011 à 19:08
Mais entre 1/3.. Y a un pion ???
Idem pour d'autre.
Relisant sont premier poste..
Ainsi, l'échiquier (R = reine, 0 = pions) ci dessous possède 5 conflits.
Ça ne correspond pas avec ta démo ?
J'abandonne car s'il ne donne pas une explication claire tout le monde va tourner en rond.
A+
Idem pour d'autre.
Relisant sont premier poste..
Ainsi, l'échiquier (R = reine, 0 = pions) ci dessous possède 5 conflits.
Ça ne correspond pas avec ta démo ?
J'abandonne car s'il ne donne pas une explication claire tout le monde va tourner en rond.
A+
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
9 févr. 2011 à 19:04
9 févr. 2011 à 19:04
j'espère que non !!!!
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
9 févr. 2011 à 19:10
9 févr. 2011 à 19:10
Croisement de réponse :-)
Relisant sont premier poste..
Ainsi, l'échiquier (R = reine, 0 = pions) ci dessous possède 5 conflits.
Ça ne correspond pas avec ta démo ?
Relisant sont premier poste..
Ainsi, l'échiquier (R = reine, 0 = pions) ci dessous possède 5 conflits.
Ça ne correspond pas avec ta démo ?
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié par ccm81 le 9/02/2011 à 20:41
Modifié par ccm81 le 9/02/2011 à 20:41
si !
d'ailleurs avec la sienne aussi, sauf que comme il compte les conflits orientés et donc 6+4 = 10 donc 5 conflits non orientés
le hic, c'est qu'on a du mal a savoir si c'est le comptage a la main ou l'algorithme qui lui pose pb
au passage, j'ai envoyé une demande sur "comment mettre les titres sur les axes excel 2010", et comme ça ne répond pas, est ce que tu connais?
d'ailleurs avec la sienne aussi, sauf que comme il compte les conflits orientés et donc 6+4 = 10 donc 5 conflits non orientés
le hic, c'est qu'on a du mal a savoir si c'est le comptage a la main ou l'algorithme qui lui pose pb
au passage, j'ai envoyé une demande sur "comment mettre les titres sur les axes excel 2010", et comme ça ne répond pas, est ce que tu connais?
enark78
Messages postés
417
Date d'inscription
mardi 2 février 2010
Statut
Membre
Dernière intervention
12 juillet 2012
17
9 févr. 2011 à 13:53
9 févr. 2011 à 13:53
je n'ai pas compris ce que tu appelles un conflit.
pipleton
Messages postés
23
Date d'inscription
vendredi 21 janvier 2011
Statut
Membre
Dernière intervention
15 juin 2012
9 févr. 2011 à 14:08
9 févr. 2011 à 14:08
mais non je suis pas d'accord si je boucle de 0 à 3 je ne fais que les valeur 0,1,2!!!
Pour mon histoire de conflit, c'est le nombre de prise possible par une reine en gros. Ainsi une reine peut se déplacer, verticalement, horizontalement et en diagonale mais ne peut pas revenir sur ses pas! Ai je été pus clair?
Merci tout de même
Pour mon histoire de conflit, c'est le nombre de prise possible par une reine en gros. Ainsi une reine peut se déplacer, verticalement, horizontalement et en diagonale mais ne peut pas revenir sur ses pas! Ai je été pus clair?
Merci tout de même
enark78
Messages postés
417
Date d'inscription
mardi 2 février 2010
Statut
Membre
Dernière intervention
12 juillet 2012
17
9 févr. 2011 à 14:14
9 févr. 2011 à 14:14
elles doivent monter ou descendre ?
pipleton
Messages postés
23
Date d'inscription
vendredi 21 janvier 2011
Statut
Membre
Dernière intervention
15 juin 2012
9 févr. 2011 à 15:07
9 févr. 2011 à 15:07
elles doivent monter
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 févr. 2011 à 15:57
9 févr. 2011 à 15:57
il n'y a pas à être d'accord. si tu boucle de 0 à 4, tu va avoir un débordement de tableau.
C'est presque plus clair sur le conflit. Il aurait fallu que tu donnes les règles pour commencer. Aux échecs, rien n'empêche une dame de reculer.
C'est presque plus clair sur le conflit. Il aurait fallu que tu donnes les règles pour commencer. Aux échecs, rien n'empêche une dame de reculer.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié par ccm81 le 9/02/2011 à 15:02
Modifié par ccm81 le 9/02/2011 à 15:02
bonjour a tous les trois
peut être : si pour chaque reine tu compte le nombre de conflits (orientés) , tu devrais trouver le double du total des conflits (non orientés)
bonne suite
peut être : si pour chaque reine tu compte le nombre de conflits (orientés) , tu devrais trouver le double du total des conflits (non orientés)
bonne suite
pipleton
Messages postés
23
Date d'inscription
vendredi 21 janvier 2011
Statut
Membre
Dernière intervention
15 juin 2012
9 févr. 2011 à 15:08
9 févr. 2011 à 15:08
tout à fait mais l'un comme l'autre je ne trouve pas ce qu'il faut
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
9 févr. 2011 à 15:12
9 févr. 2011 à 15:12
re
si j'ai compris le pb, sur ton exemple
je compte 4 conflits orientés hors diagonales
et 6 conflits orientés sur les diagonales
soit un total de 10 orientés et 5 non orientés
si j'ai compris le pb, sur ton exemple
je compte 4 conflits orientés hors diagonales
et 6 conflits orientés sur les diagonales
soit un total de 10 orientés et 5 non orientés
pipleton
Messages postés
23
Date d'inscription
vendredi 21 janvier 2011
Statut
Membre
Dernière intervention
15 juin 2012
9 févr. 2011 à 15:25
9 févr. 2011 à 15:25
Je suis tout a fait d'accord avec vous.Je préfererai pour ma part compter les conflits orientés. Pour le premier echiquier je suis passé par un tableau temporaire et cela fonctionne. Par contre si je prends les echiquiers ci dessous je en trouve pas le nombre de conflit voulus! Pouvez vous m'aider?
1 0 1 0
0 1 0 0
0 0 0 1
0 0 0 0
conflit = 3
1 0 1 0
0 0 0 0
0 0 0 1
0 1 0 0
conflit = 1
Merci d'avance
je remets mon code :
#include <stdio.h>
#include <stdlib.h>
int main()
{
//partie déclarative
int tableau[4][4] = {{1,0,1,0},
{0,1,0,1},
{0,0,0,0},
{0,0,0,0}};// 0=pion, 1 = reine
int temp[4][4] = {{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0}};// 0=pion, 1 = reine;
int i,j,conflit;
//affichage du tableau
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("%d",tableau[i][j]);
}
printf("\n");
}
//calcul du nombre de prise
conflit = 0;
//pour chaque ligne
for(i=0;i<4;i++){
//pour chaque colonne
for(j=0;j<4;j++){
if(tableau[i][j]==1)
{
if(tableau[i][j+1]==0)
{
temp[i+1][j]=2;
conflit ++;
if(tableau[i+1][j+1]==0 && temp[i][j+1]!=2)
{
conflit ++;
}
}
}
}
}
printf("%s%d","H=", conflit);
return 0;
}
1 0 1 0
0 1 0 0
0 0 0 1
0 0 0 0
conflit = 3
1 0 1 0
0 0 0 0
0 0 0 1
0 1 0 0
conflit = 1
Merci d'avance
je remets mon code :
#include <stdio.h>
#include <stdlib.h>
int main()
{
//partie déclarative
int tableau[4][4] = {{1,0,1,0},
{0,1,0,1},
{0,0,0,0},
{0,0,0,0}};// 0=pion, 1 = reine
int temp[4][4] = {{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0}};// 0=pion, 1 = reine;
int i,j,conflit;
//affichage du tableau
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("%d",tableau[i][j]);
}
printf("\n");
}
//calcul du nombre de prise
conflit = 0;
//pour chaque ligne
for(i=0;i<4;i++){
//pour chaque colonne
for(j=0;j<4;j++){
if(tableau[i][j]==1)
{
if(tableau[i][j+1]==0)
{
temp[i+1][j]=2;
conflit ++;
if(tableau[i+1][j+1]==0 && temp[i][j+1]!=2)
{
conflit ++;
}
}
}
}
}
printf("%s%d","H=", conflit);
return 0;
}
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
9 févr. 2011 à 15:33
9 févr. 2011 à 15:33
re
je suis d'accord avec tes resultats sur les deux exemples ci-dessus
je ne connais pas le C++
mais une autre idée
si on compte (bestial) comme conflit une reine avec elle même ça nous fait 3 fois plus d'orientés que de non orientés et on n'a plus a s'embeter pour les plages de boucle
bon, c'est intéressant, je vais tenter en VBA
je suis d'accord avec tes resultats sur les deux exemples ci-dessus
je ne connais pas le C++
mais une autre idée
si on compte (bestial) comme conflit une reine avec elle même ça nous fait 3 fois plus d'orientés que de non orientés et on n'a plus a s'embeter pour les plages de boucle
bon, c'est intéressant, je vais tenter en VBA
pipleton
Messages postés
23
Date d'inscription
vendredi 21 janvier 2011
Statut
Membre
Dernière intervention
15 juin 2012
9 févr. 2011 à 16:50
9 févr. 2011 à 16:50
Ce n'est pas du C++ mais du C.
De plus, il ne faut pas compter(bestial)!
De plus, il ne faut pas compter(bestial)!
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
9 févr. 2011 à 15:03
9 févr. 2011 à 15:03
Bonjour,
Quand tu "prend" un pion, remplacer la valeur de la case, par exemple par "S" cette case ne serait plus prise en compte.
A+
Quand tu "prend" un pion, remplacer la valeur de la case, par exemple par "S" cette case ne serait plus prise en compte.
A+
pipleton
Messages postés
23
Date d'inscription
vendredi 21 janvier 2011
Statut
Membre
Dernière intervention
15 juin 2012
9 févr. 2011 à 15:10
9 févr. 2011 à 15:10
Tout a fait c'est ce que j'ai fait!Mais ça ne marche pas! car pour un echiquier donner suivant on doit trouver un conflit = 3 et un conflit = 1
1 0 1 0
0 1 0 0
0 0 0 1
0 0 0 0
conflit = 3
1 0 1 0
0 0 0 0
0 0 0 1
0 1 0 0
conflit = 1
Je ne comprends pas comment les trouver!
Merci d'avance
1 0 1 0
0 1 0 0
0 0 0 1
0 0 0 0
conflit = 3
1 0 1 0
0 0 0 0
0 0 0 1
0 1 0 0
conflit = 1
Je ne comprends pas comment les trouver!
Merci d'avance
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
9 févr. 2011 à 16:13
9 févr. 2011 à 16:13
re
tu ne comprends pas quoi
- comment on les compte sur le papier ?
- comment on programme l'histoire ?
tu ne comprends pas quoi
- comment on les compte sur le papier ?
- comment on programme l'histoire ?
enark78
Messages postés
417
Date d'inscription
mardi 2 février 2010
Statut
Membre
Dernière intervention
12 juillet 2012
17
9 févr. 2011 à 16:17
9 févr. 2011 à 16:17
comment vous arrivez
enark78
Messages postés
417
Date d'inscription
mardi 2 février 2010
Statut
Membre
Dernière intervention
12 juillet 2012
17
9 févr. 2011 à 16:17
9 févr. 2011 à 16:17
comment vous arrivez a ces résultats en les comptant
enark78
Messages postés
417
Date d'inscription
mardi 2 février 2010
Statut
Membre
Dernière intervention
12 juillet 2012
17
9 févr. 2011 à 16:45
9 févr. 2011 à 16:45
Bizarre mais ok. Enfin pas tout a fait puisque j'ai cru comprendre qu'elles ne pouvaient que descendre donc (1,1) ne devrait pas etre en conflit avec (2,2). De meme pour (1,3) avec (2,2).
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
9 févr. 2011 à 16:49
9 févr. 2011 à 16:49
j'ai fait au plus simple, en comptant les conflits orientés ça donne le double des conflits non orientés,
pipleton
Messages postés
23
Date d'inscription
vendredi 21 janvier 2011
Statut
Membre
Dernière intervention
15 juin 2012
9 févr. 2011 à 16:53
9 févr. 2011 à 16:53
Si elles peuvent descendre. Si je les laisser comprendre auparavant je m'en excuse. Mais comment peut on faire pour l'algorithme??? Parce que le miens n'a pas l'air bon, pouvez vous m'éclairer mes erreurs et m'aider à résoudre ce problème?
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié par ccm81 le 9/02/2011 à 17:08
Modifié par ccm81 le 9/02/2011 à 17:08
re
en VBA , ceci fonctionne (à priori)
- n est le nombre de lignes/colonnes de l'échiquier
- T est le tableau echiquier rempli de "" ou de "R"
- on ne compte que les conflits non orientés , donc en descendant (c'est finalement plus simple et moins bestial)
- à toi de traduire en C
bonne suite
en VBA , ceci fonctionne (à priori)
- n est le nombre de lignes/colonnes de l'échiquier
- T est le tableau echiquier rempli de "" ou de "R"
- on ne compte que les conflits non orientés , donc en descendant (c'est finalement plus simple et moins bestial)
- à toi de traduire en C
Function NbConflits2(n As Long) As Long Dim nc As Long, li As Long, co As Long, c As Long, l As Long Dim T T = Range("echiquier").Value nc = 0 For li = 1 To n For co = 1 To n If T(li, co) = "R" Then ' conflits dans ligne li For c = co + 1 To n If T(li, c) = "R" Then nc = nc + 1 End If Next c ' conflits dans colonne co For l = li + 1 To n If T(l, co) = "R" Then nc = nc + 1 End If Next l ' conflits dans diagonale1 \ en descendant à droite l = li: c = co While l < n And c < n l = l + 1: c = c + 1 If T(l, c) = "R" Then nc = nc + 1 End If Wend ' conflits dans diagonale2 / en descendant à gauche l = li: c = co While l < n And c > 1 l = l + 1: c = c - 1 If T(l, c) = "R" Then nc = nc + 1 End If Wend End If Next co Next li NbConflits2 = nc End Function
bonne suite
pipleton
Messages postés
23
Date d'inscription
vendredi 21 janvier 2011
Statut
Membre
Dernière intervention
15 juin 2012
9 févr. 2011 à 17:10
9 févr. 2011 à 17:10
je ne comprends pas le calcul en diagonal?Pouvez vous m'expliquer?
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié par ccm81 le 9/02/2011 à 17:17
Modifié par ccm81 le 9/02/2011 à 17:17
- diagonale 1 \ elle est décrite depuis (li,co) en descendant et en avançant (l augmente et c augmente)
- diagonale 2 / elle est décrite depuis (li,co) en descendant et en reculant (l augmente et c diminue)
- diagonale 2 / elle est décrite depuis (li,co) en descendant et en reculant (l augmente et c diminue)
pipleton
Messages postés
23
Date d'inscription
vendredi 21 janvier 2011
Statut
Membre
Dernière intervention
15 juin 2012
9 févr. 2011 à 17:25
9 févr. 2011 à 17:25
Qu'est ce que cela signifie en VBA? C'est surtout le : qui m'intéresse!
l = li: c = co
merci d'avance
l = li: c = co
merci d'avance
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
9 févr. 2011 à 18:35
9 févr. 2011 à 18:35
le : est un separatueur d'instruction
pipleton
Messages postés
23
Date d'inscription
vendredi 21 janvier 2011
Statut
Membre
Dernière intervention
15 juin 2012
9 févr. 2011 à 20:31
9 févr. 2011 à 20:31
alors si j'ai bien compris l = li : c =co revient à faire
l = li
c = co
Je me trompe?
Si non, le calcul en diagonale ne fonctionne pas chez moi!
l = li
c = co
Je me trompe?
Si non, le calcul en diagonale ne fonctionne pas chez moi!
pipleton
Messages postés
23
Date d'inscription
vendredi 21 janvier 2011
Statut
Membre
Dernière intervention
15 juin 2012
9 févr. 2011 à 17:03
9 févr. 2011 à 17:03
Merci je vais essayer! je vous tiens au courant
pipleton
Messages postés
23
Date d'inscription
vendredi 21 janvier 2011
Statut
Membre
Dernière intervention
15 juin 2012
9 févr. 2011 à 23:35
9 févr. 2011 à 23:35
C'est bon j'ai enfin réussi à faire ce que je voulais!Merci de votre aide à tous
Bonne soirée ou plutot bonne nuit
Bonne soirée ou plutot bonne nuit
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
10 févr. 2011 à 14:15
10 févr. 2011 à 14:15
re
bon, on y est donc arrivé
tu mets le pb a resolu
bonne journée
bon, on y est donc arrivé
tu mets le pb a resolu
bonne journée
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 févr. 2011 à 13:51
9 févr. 2011 à 13:51
Salut.
Je n'ai rien compris à ton histoire de conflit...
ce qui est sur, c'est que tu fais mal ta boucle, tu va chercher les cases voisines, mais celles-ci n'existe pas (d'où peut être ton erreur).
Boucle de 0 à 3 si tu veux être juste et éviter les erreurs de débordement.
Je n'ai rien compris à ton histoire de conflit...
ce qui est sur, c'est que tu fais mal ta boucle, tu va chercher les cases voisines, mais celles-ci n'existe pas (d'où peut être ton erreur).
Boucle de 0 à 3 si tu veux être juste et éviter les erreurs de débordement.
9 févr. 2011 à 16:04
Modifié par ccm81 le 9/02/2011 à 17:14
tu as compté 2 fois le conflit C1/B2
d'où la distinction (importante) orienté et non orienté