Je suppose vous connaissez tous final fantasy!

Bonjour a tous je suis nouveau viens de minscrire ojourdui et jai une question!!!

Je joue bcp et jai jouer a final fantasy 3 remixer sur ds et il ya un mini-jeu:

On a 4 chiffres entre 1 et 9 les chiffres peuvent etre les memes. Ce qul fo faire est de trouver 10 avec ces 4 chiffres en pouvant utiliser les 4 operations possibles.

Je me suis demander si cetait possible den creer un programme et si oui quel algorithme…

Merci davance pour votre aide!

Déjà, c’est le 4.

Ensuite, un peu de réflexion c’est le but non? :wink:

ok excusez moi je me suis mal formuler!

ma question est: est ce ke je vais devoir rentrer toutes les possiblites possibles pr trouver la solution ou existe til une maniere plus simple avec un algorithme!?

En fait, tu veux porter le mini-jeu sur pc ou juste faire un programme qui trouve les solutions d’un problème donné ?

En fait jai envie de faire un progrqmme qui me permet de trouver la ou les solutions o probleme!

Vu le nombre restreint de possibilités, je pense que tu peux prendre la méthode la plus simple, à savoir : tout essayer.

Le plus difficile est d’écrire un algorithme qui te trouve toutes les permutations possibles (exemple pour 123 : 123, 132, 213, 231, 312, 321), mais tu dois pouvoir trouver ton bohneur en farfouillant un peu sur google. A partir de là, essaies toutes les opérations possibles jusqu’à trouver une combinaison qui marche :wink:

A voir si ca peut marcher

		int i=1;
		int j=1;
		int k=1;
		int l=1;
		int a = 0,b=0,c=0;
		//String[] tab = {"+","-","/","*"};
		float result =0;
		for(i =1;i<10;i++)
			for(a =0;a<4;a++)
				for(j =1;j<10;j++)
					switch (a){
					case 0:
						result= i + j;
						break;
					case 1:
						result= i - j;
						break;
					case 2:
						result= i /j;
						break;
					case 3:
						result= i * j;
						break;
									}				
					for(b =0;b<4;b++)
						for(k =1;k<10;k++)
							
							if(result != 0 )
							switch (b){
							case 0:
								result= result + k;
								break;
							case 1:
								result= result - k;
								break;
							case 2:
								result= result / k;
								break;
							case 3:
								result= result * k;
								break;
											}
							else	
								switch (b){
								case 0:
									result= result + k;
									break;
								case 1:
									result= result - k;
									break;
								case 2:
									result= 18000;
									break;
								case 3:
									result= result * k;
									break;
												}
					
						for(c =0;c<4;c++)
								for(l =1;l<10;l++)
									
									if(result != 0 )
									switch (c){
									case 0:
										result= result + l;
										break;
									case 1:
										result= result - l;
										break;
									case 2:
										result= result / l;
										break;
									case 3:
										result= result * l;
										break;
													}
									else
										switch (c){
										case 0:
											result= result + l;
											break;
										case 1:
											result= result - l;
											break;
										case 2:
											result= 18000;
											break;
										case 3:
											result= result * l;
											break;
														}
									if(result == 10 )
	System.out.println(" "+i+" "+a+" "+j+" "+b+" "+k+" "+c+" "+l+" ");
									else result =0;

Versions 2


public class calc {

	/**
	 * @param args
	 */
	
	
static float oper(float x, float y, float z){
float reponse=0;
	
if(x !=0){
	switch ((int)z){
	case 0:
		reponse= x + y;
		break;
	case 1:
		reponse= x - y;
		break;
	case 2:
		reponse= x /y;
		break;
	case 3:
		reponse= x * y;
		break;
					}				
	
}else{
	switch ((int)z){
	case 0:
		reponse= x + y;
		break;
	case 1:
		reponse= x - y;
		break;
	case 2:
		reponse = 11201123;
		break;
	case 3:
		reponse= x * y;
		break;
					}

}
return reponse;
	
}
	
	

static void affich(float g,float m,float n,float o,float p,float a,float b,float c){
	String[] tab = {"+","-","/","*"};	
	if(g == 10 )
		System.out.println(" "+m+" "+tab[(int)a]+" "+n+" "+tab[(int) b]+" "+o+" "+tab[(int)c]+" "+p+" = "+g);
	
	
	
}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("C'est parti");
		float i=1;
		float j=1;
		float k=1;
		float l=1;
		float a = 0,b=0,c=0;
		
		float result =0;
		
for(i =1;i<10;i++){
	for(a=0;a<4;a++){
		for(j =1;j<10;j++){
			result=oper(i,j,a);
			for(b =0;b<4;b++){
				for(k =1;k<10;k++){
					result=oper(result,k,b);
					for(c =0;c<4;c++){
						for(l =1;l<10;l++){
							result=oper(result,l,c);
							affich(result,i,j,k,l,a,b,c);
	
							}
					}
				}
			}
		}
	}
}
			
	}

}

Par contre j’ai des résultat bizarre donc a voir si quelqu’un peut éclairer

Et voici la version Final qui je pense fonctionne : Pour avoir les résultat il suffit de le lancer :


public class calc {

	static int compteur=0;
	/**
	 * @param args
	 */
	
	
static float oper(float i, float j, float k,float l,float a, float b, float c){
float reponse=0;


switch ((int)a){
case 0:
	reponse= i + j;
	break;
case 1:
	reponse= i - j;
	break;
case 2:
	reponse= i /j;
	break;
case 3:
	reponse= i * j;
	break;
				}

	if(reponse !=0){
		switch ((int)b){
		case 0:
			reponse= reponse + k;
			break;
		case 1:
			reponse= reponse - k;
			break;
		case 2:
			reponse= reponse /k;
			break;
		case 3:
			reponse= reponse * k;
			break;
						}				
	
	}else{
		switch ((int)b){
		case 0:
			reponse=reponse +k;
			break;
		case 1:
			reponse=reponse - k;
			break;
		case 2:
			reponse = 11201123;
			break;
		case 3:
			reponse= reponse * k;
			break;
						}}

		
		if(reponse !=0){
			switch ((int)c){
			case 0:
				reponse= reponse + l;
				break;
			case 1:
				reponse= reponse - l;
				break;
			case 2:
				reponse= reponse /l;
				break;
			case 3:
				reponse= reponse * l;
				break;
							}				
		
		}else{
			switch ((int)c){
			case 0:
				reponse=reponse +l;
				break;
			case 1:
				reponse=reponse - l;
				break;
			case 2:
				reponse = 11201123;
				break;
			case 3:
				reponse= reponse * l;
				break;
							}}


return reponse;
	
}
	
	

static void affich(float g,float m,float n,float o,float p,float a,float b,float c){
	String[] tab = {"+","-","/","*"};	
	
	if(g == 10 ){
		System.out.println(" "+m+" "+tab[(int)a]+" "+n+" "+tab[(int) b]+" "+o+" "+tab[(int)c]+" "+p+" = "+g);
		compteur++;
	}
	
	
}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("C'est parti");
		float i=1;
		float j=1;
		float k=1;
		float l=1;
		float a = 0,b=0,c=0;
		
		float result =0;
		
for(i =1;i<10;i++){
	for(a=0;a<4;a++){
		for(j =1;j<10;j++){
		
			for(b =0;b<4;b++){
				for(k =1;k<10;k++){
					
					for(c =0;c<4;c++){
						for(l =1;l<10;l++){
							result=oper(i,j,k,l,a,b,c);
							affich(result,i,j,k,l,a,b,c);
	
							}
					}
				}
			}
		}
	}
}
	
System.out.println("il y a "+compteur+" reponses");
	}

}

wow merci bcp! jvais essailler just voir si ca marche pui vai faire me propre version ensuite merci bcp!

faus encore gérer les cas de priorité d’opération mais je pense qu’il y a moyen de modifier le code pour que ca le fasse , je regarderai un peu plus tard