Bonjour,
je suis étudiant en informatique et je vais un devoire de representation de connaissance où je plante .
j explique
on a 3 joueur A,B,C possedent un e boîte dont ils ne peuvent pas voir le contenue, mais ils savent ce contenu est visible par les autres joueurs.Chaque joueur sait egalement que
*chaque boite contient 3 boules
*Ces boules ont été extraites d 'un coffre qui contenait 4 boules rouge ,4 boules vertes, et 2 boules jaunes
*Aucun joueur ne peut voir la boule resté dans le coffre
*chaque joueur est sufisament intelligent pour effectuer tous les raisonnement lui permettant de déduire le contenu de sa boîte.
*A un intervalle fixe , meneur de jeu demande si un joueur a trouvé la couleur des boules qui sont dans sa boîte;si c'est le cas , il arrête le jeu.
la question est :
exemple de etat: joueur A:RRR Joueur B: RJJ Joueur C:VVV etat de termine _1: le joueur C peut deduire le couleur de boule de sa boite directement et parsuite peut finir le jeu
alors ma question est la suivant : quelles sont les cas où on peut pas determine directemet le couleur de boule;
exemple lorsque le joueur A voit RJJ VVV il reste donc RRRV et il ne peut avoire que RRR ou RRV;S'il avait RRR, le joueur C voyant RRR RJJ saurait qu il n a que des boules vertes et aurait arrete le jeu , come il ne l a pas fait , le joueur A dedui qu il a RRV?
alors voilà le programme que j ai developpe mais il me reste ici comment je fait pour determiner se different cas comme celle precedente
import java.io.*;
import java.lang.String;
public class Rpc {
public static String [] Tableau1 = {"RRR","VVV","RRV","RRJ","RJJ","VVJ","VJJ","RVV","RVJ"};
public static String [] Tb1 = Tableau1;
public static String [] Tab3 = Tableau1;
public static String [] Tableau4 = new String [81];
public static String [] Tabend = new String [729];
public static String [] Tabend2= new String [729];
public static String [] Termine1= new String[120];
/*public static void Terminer1(String []tab)
{
boolean h;
int k=0;
String elt;
for(int i=0;i<Tabend.length;i++)
{
elt=tab[i];
if(tab[i]==null) continue ;
else
{
String A=elt.substring(0,3);
String B=elt.substring(3,6);
String C=elt.substring(6,9);
if(A.equals("VVV") && B.equals("RRR") ) {
Termine1[k]=elt+" Termine C vrai";
k++;
}
if(A.equals("RRR") && B.equals("VVV") ) {
Termine1[k]=elt+" Termine C vrai";
k++;
}
if(B.equals("VVV") && C.equals("RRR") ) {
Termine1[k]=elt+" Termine A vrai";
k++;
}
if(B.equals("RRR") && C.equals("VVV") ) {
Termine1[k]=elt+" Termine A vrai";
k++;
}
if(A.equals("VVV") && C.equals("RRR") ) {
Termine1[k]=elt+" Termine B vrai";
k++;
}
if(A.equals("RRR") && C.equals("VVV") ) {
Termine1[k]=elt+" Termine B vrai";
k++;
}
if(h=A.equals(B))
{
Termine1[k]=elt+" Termine C vrai";
k++;
}
if(h=B.equals(C))
{
Termine1[k]=elt+" Termine A vrai";
k++;
}
if(h=A.equals(C))
{
Termine1[k]=elt+" Termine B vrai";
k++;
}
}
}
System.out.println("la valeur de k est"+k);
for(int j=0;j<k;j++)
{
System.out.println(j+":"+Termine1[j]);
}
}
public static void Terminer2(String []tab)
{
boolean h;
int k=0;
String elt;
for(int i=0;i<Tabend.length;i++)
{
elt=tab[i];
if(tab[i]==null) continue ;
else
{
String A=elt.substring(0,3);
String B=elt.substring(3,6);
String C=elt.substring(6,9);
if(A.equals("VVV") && B.equals("RRR") ) {
Termine1[k]=elt+" Termine C vrai";
k++;
}
if(A.equals("RRR") && B.equals("VVV") ) {
Termine1[k]=elt+" Termine C vrai";
k++;
}
if(B.equals("VVV") && C.equals("RRR") ) {
Termine1[k]=elt+" Termine A vrai";
k++;
}
if(B.equals("RRR") && C.equals("VVV") ) {
Termine1[k]=elt+" Termine A vrai";
k++;
}
if(A.equals("VVV") && C.equals("RRR") ) {
Termine1[k]=elt+" Termine B vrai";
k++;
}
if(A.equals("RRR") && C.equals("VVV") ) {
Termine1[k]=elt+" Termine B vrai";
k++;
}
if(h=A.equals(B))
{
Termine1[k]=elt+" Termine C vrai";
k++;
}
if(h=B.equals(C))
{
Termine1[k]=elt+" Termine A vrai";
k++;
}
if(h=A.equals(C))
{
Termine1[k]=elt+" Termine B vrai";
k++;
}
}
}
System.out.println("la valeur de k est"+k);
for(int j=0;j<k;j++)
{
System.out.println(j+":"+Termine1[j]);
}
}*/
public static void main(String[] args) {
int i ,cptR,cptV,cptJ,j,k=0;
String s;char c;
//Produit cartesien
for ( i=0 ; i<Tableau1.length; i++){
for ( j=0 ; j<Tb1.length; j++){
Tableau4[k]=(Tableau1[i].concat(Tb1[j]));
k=k+1;
}
}
k=0;
for ( i=0 ; i<Tab3.length; i++){
for (j=0 ; j<Tableau4.length; j++){
Tabend[k]=(Tab3[i].concat(Tableau4[j]));
k=k+1;
}
}
//supression des combinaisons impossibles
for(i=0;i<Tabend.length;i++) {
s = Tabend[i]; cptR=0;cptV=0;cptJ=0;
for(j=0;j<s.length();j++){
c=s.charAt(j);
if(c=='R') cptR=cptR+1;
else if (c=='V') cptV=cptV+1;
else cptJ=cptJ+1;
}
if( cptR>4 ||cptV>4 || cptJ>2) Tabend[i]=null;
}
//affichage
k=1;
for (i=0 ; i<Tabend.length ; i++){
if (Tabend[i]==null) continue ;
else {System.out.println(k+" : "+Tabend[i]);
k++;}
}
/*Terminer1(Tabend);
Terminer2(Tabend2);*/
}
}
merci
Configuration: Windows Vista
Firefox 3.5.5