Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Taquin;
- import java.util.*;
- public class Chiffres implements IJeu{
- public enum Operateur {PLUS,MINUS,TIMES,DIV};
- public class BadParamsException extends Exception{
- }
- private ArrayList<Integer> chiffres;
- private ArrayList<Operateur> op;
- private int resultat;
- public Chiffres(int[] c, Operateur[] o, int res) throws BadParamsException{
- if ((c.length) != (o.length+1)){
- throw new BadParamsException();
- } else {
- this.resultat = res;
- this.chiffres = new ArrayList<Integer>();
- for (int n : c){
- if (n==0){
- throw new BadParamsException();
- } else {
- this.chiffres.add(n);
- }
- }
- this.op = new ArrayList<Operateur>();
- for (Operateur op : o){
- this.op.add(op);
- }
- }
- }
- public Chiffres(Chiffres c){
- this.chiffres = new ArrayList<Integer>();
- this.op = new ArrayList<Operateur>();
- for (Integer n : c.chiffres){
- this.chiffres.add(n);
- }
- for (Operateur o : c.op){
- this.op.add(o);
- }
- this.resultat = c.resultat;
- }
- public boolean estGagnant(){
- if (this.chiffres.size()==1 && this.chiffres.get(0)==this.resultat){
- return true;
- } else {
- return false;
- }
- }
- public ArrayList<IJeu> generer_fils(){
- ArrayList<IJeu> enfants = new ArrayList<IJeu>();
- Chiffres fils = new Chiffres(this);
- for (Integer x : this.chiffres){
- for (Integer y : this.chiffres){
- if (!(x==y)){
- for (Operateur o : this.op){
- switch (o) {
- case PLUS :
- fils = new Chiffres(this);
- fils.chiffres.remove(x);
- fils.chiffres.remove(y);
- fils.chiffres.add(x+y);
- fils.op.remove(o);
- enfants.add(fils);
- break;
- case MINUS :
- fils = new Chiffres(this);
- fils.chiffres.remove(x);
- fils.chiffres.remove(y);
- fils.op.remove(o);
- fils.chiffres.add(x-y);
- enfants.add(fils);
- break;
- case TIMES :
- fils = new Chiffres(this);
- fils.chiffres.remove(x);
- fils.chiffres.remove(y);
- fils.chiffres.add(x*y);
- fils.op.remove(o);
- enfants.add(fils);
- break;
- case DIV :
- fils = new Chiffres(this);
- fils.chiffres.remove(x);
- fils.chiffres.remove(y);
- fils.op.remove(o);
- fils.chiffres.add(x/y);
- enfants.add(fils);
- break;
- }
- }
- }
- }
- }
- return enfants;
- }
- public String toString(){
- String s = "{";
- for (Integer n : this.chiffres){
- s+= n + " ";
- }
- s += "} {";
- for (Operateur o : this.op){
- switch (o) {
- case PLUS : s += "+ "; break;
- case MINUS : s += "- "; break;
- case TIMES : s += "* "; break;
- case DIV : s += "/ "; break;
- }
- }
- s += "} = " + this.resultat + "\n";
- return s;
- }
- public boolean equals(Object o){
- if (o.getClass()==this.getClass() && ((Chiffres)o).chiffres.size()==this.chiffres.size()){
- for (int i = 0; i<this.chiffres.size(); i++){
- if (this.chiffres.get(i) != ((Chiffres)o).chiffres.get(i)){
- return false;
- }
- }
- for (int i = 0; i<this.op.size(); i++){
- if (this.op.get(i)!=((Chiffres)o).op.get(i)){
- return false;
- }
- }
- return true;
- } else return false;
- }
- public static void main(String[] args) {
- try {
- Chiffres c = new Chiffres(new int[]{1,4,3},new Operateur[]{Operateur.PLUS, Operateur.MINUS},6);
- System.out.println(c.estGagnant());
- System.out.println(c);
- Chiffres c2 = new Chiffres(new int[]{8},new Operateur[]{},8);
- System.out.println(c2.estGagnant());
- Resol res = new Resol(c);
- res.solve();
- res.printSolution();
- } catch (Exception e) {
- System.err.println("Impossible");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment