ジャワ国新遊記の二十一----速算24

68515 ワード

4枚のカードは、4則演算で24を得て、1つの数限は1回で、速い者は勝つ.
コード:
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 *  24
 * @author heyang
 *
 */
public class Caculator{
    private double anticipate;//  
    private double op1;//  
    private double op2;//  
    private List<String> fomulaList;//  
    
    //  24 
    public Caculator(double[] arr){
        this(24,arr);
    }
    
    //
    public Caculator(double anticipate,double[] arr){
        // 2
        if(arr.length==2){
            this.anticipate=anticipate;
            op1=arr[0];
            op2=arr[1];
            fomulaList=getFomulaList();
        }
        
        if(arr.length==3){
            this.anticipate=anticipate;// C
            
            double[] arrNew;// A
            double anticipateNew;// arr[2]=B
            List<String> list;
            Caculator c;
            fomulaList=new ArrayList<String>();
            
            /// 0,1,2
            // A+B=C 
            arrNew=new double[2];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            anticipateNew=anticipate-arr[2];
            c=new Caculator(anticipateNew,arrNew);
            
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")+"+arr[2]);
                }
            }
            
            // A-B=C
            arrNew=new double[2];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            anticipateNew=anticipate+arr[2];
            c=new Caculator(anticipateNew,arrNew);
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")-"+arr[2]);
                }
            }
            
            // B-A=C
            arrNew=new double[2];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            anticipateNew=arr[2]-anticipate;
            c=new Caculator(anticipateNew,arrNew);
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add(arr[2]+"-("+str+")");
                }
            }
            
            // A*B=C
            arrNew=new double[2];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            anticipateNew=anticipate/arr[2];
            c=new Caculator(anticipateNew,arrNew);
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")*"+arr[2]);
                }
            }
            
            // A/B=C
            arrNew=new double[2];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            anticipateNew=anticipate*arr[2];
            c=new Caculator(anticipateNew,arrNew);
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")/"+arr[2]);
                }
            }
            
            // B/A=C
            arrNew=new double[2];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            anticipateNew=arr[2]/anticipate;
            c=new Caculator(anticipateNew,arrNew);
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add(arr[2]+"/("+str+")");
                }
            }
            
            /// 1,2,0
            // A+B=C 
            arrNew=new double[2];
            arrNew[0]=arr[1];
            arrNew[1]=arr[2];
            anticipateNew=anticipate-arr[0];
            c=new Caculator(anticipateNew,arrNew);
            
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")+"+arr[0]);
                }
            }
            
            // A-B=C
            arrNew=new double[2];
            arrNew[0]=arr[1];
            arrNew[1]=arr[2];
            anticipateNew=anticipate+arr[0];
            c=new Caculator(anticipateNew,arrNew);
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")-"+arr[0]);
                }
            }
            
            // B-A=C
            arrNew=new double[2];
            arrNew[0]=arr[1];
            arrNew[1]=arr[2];
            anticipateNew=arr[0]-anticipate;
            c=new Caculator(anticipateNew,arrNew);
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add(arr[0]+"-("+str+")");
                }
            }
            
            // A*B=C
            arrNew=new double[2];
            arrNew[0]=arr[1];
            arrNew[1]=arr[2];
            anticipateNew=anticipate/arr[0];
            c=new Caculator(anticipateNew,arrNew);
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")*"+arr[0]);
                }
            }
            
            // A/B=C
            arrNew=new double[2];
            arrNew[0]=arr[1];
            arrNew[1]=arr[2];
            anticipateNew=anticipate*arr[0];
            c=new Caculator(anticipateNew,arrNew);
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")/"+arr[0]);
                }
            }
            
            // B/A=C
            arrNew=new double[2];
            arrNew[0]=arr[1];
            arrNew[1]=arr[2];
            anticipateNew=arr[0]/anticipate;
            c=new Caculator(anticipateNew,arrNew);
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add(arr[0]+"/("+str+")");
                }
            }
            
            /// 0,2,1
            // A+B=C 
            arrNew=new double[2];
            arrNew[0]=arr[0];
            arrNew[1]=arr[2];
            anticipateNew=anticipate-arr[1];
            c=new Caculator(anticipateNew,arrNew);
            
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")+"+arr[1]);
                }
            }
            
            // A-B=C
            arrNew=new double[2];
            arrNew[0]=arr[0];
            arrNew[1]=arr[2];
            anticipateNew=anticipate+arr[1];
            c=new Caculator(anticipateNew,arrNew);
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")-"+arr[1]);
                }
            }
            
            // B-A=C
            arrNew=new double[2];
            arrNew[0]=arr[0];
            arrNew[1]=arr[2];
            anticipateNew=arr[1]-anticipate;
            c=new Caculator(anticipateNew,arrNew);
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add(arr[1]+"-("+str+")");
                }
            }
            
            // A*B=C
            arrNew=new double[2];
            arrNew[0]=arr[0];
            arrNew[1]=arr[2];
            anticipateNew=anticipate/arr[1];
            c=new Caculator(anticipateNew,arrNew);
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")*"+arr[1]);
                }
            }
            
            // A/B=C
            arrNew=new double[2];
            arrNew[0]=arr[0];
            arrNew[1]=arr[2];
            anticipateNew=anticipate*arr[1];
            c=new Caculator(anticipateNew,arrNew);
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")/"+arr[1]);
                }
            }
            
            // B/A=C
            arrNew=new double[2];
            arrNew[0]=arr[0];
            arrNew[1]=arr[2];
            anticipateNew=arr[1]/anticipate;
            c=new Caculator(anticipateNew,arrNew);
            list=c.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add(arr[1]+"/("+str+")");
                }
            }
        }
        
        if(arr.length==4){
            this.anticipate=anticipate;// C
            
            double[] arrNew;// A
            double anticipateNew;// arr[2]=B
            List<String> list;
            Caculator cac;
            fomulaList=new ArrayList<String>();
            
            /// 0,1,2 &3
            // A+B=C 
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            arrNew[2]=arr[2];
            
            anticipateNew=anticipate-arr[3];
            cac=new Caculator(anticipateNew,arrNew);
            
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")+"+arr[3]);
                }
            }
            
            // A-B=C
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            arrNew[2]=arr[2];
            
            anticipateNew=anticipate+arr[3];
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")-"+arr[3]);
                }
            }
            
            // B-A=C
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            arrNew[2]=arr[2];
            
            anticipateNew=arr[3]-anticipate;
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add(arr[3]+"-("+str+")");
                }
            }
            
            // A*B=C
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            arrNew[2]=arr[2];
            
            anticipateNew=anticipate/arr[3];
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")*"+arr[3]);
                }
            }
            
            // A/B=C
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            arrNew[2]=arr[2];
            
            anticipateNew=anticipate*arr[3];
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")/"+arr[3]);
                }
            }
            
            // B/A=C
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            arrNew[2]=arr[2];
            
            anticipateNew=arr[3]/anticipate;
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add(arr[3]+"/("+str+")");
                }
            }
            
            /// 0,1,3 & 2
            // A+B=C 
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            arrNew[2]=arr[3];
            
            anticipateNew=anticipate-arr[2];
            cac=new Caculator(anticipateNew,arrNew);
            
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")+"+arr[2]);
                }
            }
            
            // A-B=C
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            arrNew[2]=arr[3];
            
            anticipateNew=anticipate+arr[2];
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")-"+arr[2]);
                }
            }
            
            // B-A=C
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            arrNew[2]=arr[3];
            
            anticipateNew=arr[2]-anticipate;
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add(arr[2]+"-("+str+")");
                }
            }
            
            // A*B=C
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            arrNew[2]=arr[3];
            
            anticipateNew=anticipate/arr[2];
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")*"+arr[2]);
                }
            }
            
            // A/B=C
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            arrNew[2]=arr[3];
            
            anticipateNew=anticipate*arr[2];
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")/"+arr[2]);
                }
            }
            
            // B/A=C
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[1];
            arrNew[2]=arr[3];
            
            anticipateNew=arr[2]/anticipate;
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add(arr[2]+"/("+str+")");
                }
            }
            
            /// 0,3,2&1
            // A+B=C 
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[3];
            arrNew[2]=arr[2];
            
            anticipateNew=anticipate-arr[1];
            cac=new Caculator(anticipateNew,arrNew);
            
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")+"+arr[1]);
                }
            }
            
            // A-B=C
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[3];
            arrNew[2]=arr[2];
            
            anticipateNew=anticipate+arr[1];
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")-"+arr[1]);
                }
            }
            
            // B-A=C
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[3];
            arrNew[2]=arr[2];
            
            anticipateNew=arr[1]-anticipate;
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add(arr[1]+"-("+str+")");
                }
            }
            
            // A*B=C
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[3];
            arrNew[2]=arr[2];
            
            anticipateNew=anticipate/arr[1];
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")*"+arr[1]);
                }
            }
            
            // A/B=C
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[3];
            arrNew[2]=arr[2];
            
            anticipateNew=anticipate*arr[1];
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")/"+arr[1]);
                }
            }
            
            // B/A=C
            arrNew=new double[3];
            arrNew[0]=arr[0];
            arrNew[1]=arr[3];
            arrNew[2]=arr[2];
            
            anticipateNew=arr[1]/anticipate;
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add(arr[1]+"/("+str+")");
                }
            }
            
            /// 1,2,3&0
            // A+B=C 
            arrNew=new double[3];
            arrNew[0]=arr[1];
            arrNew[1]=arr[2];
            arrNew[2]=arr[3];
            
            anticipateNew=anticipate-arr[0];
            cac=new Caculator(anticipateNew,arrNew);
            
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")+"+arr[0]);
                }
            }
            
            // A-B=C
            arrNew=new double[3];
            arrNew[0]=arr[1];
            arrNew[1]=arr[2];
            arrNew[2]=arr[3];
            
            anticipateNew=anticipate+arr[0];
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")-"+arr[0]);
                }
            }
            
            // B-A=C
            arrNew=new double[3];
            arrNew[0]=arr[1];
            arrNew[1]=arr[2];
            arrNew[2]=arr[3];
            
            anticipateNew=arr[0]-anticipate;
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add(arr[0]+"-("+str+")");
                }
            }
            
            // A*B=C
            arrNew=new double[3];
            arrNew[0]=arr[1];
            arrNew[1]=arr[2];
            arrNew[2]=arr[3];
            
            anticipateNew=anticipate/arr[0];
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")*"+arr[0]);
                }
            }
            
            // A/B=C
            arrNew=new double[3];
            arrNew[0]=arr[1];
            arrNew[1]=arr[2];
            arrNew[2]=arr[3];
            
            anticipateNew=anticipate*arr[0];
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add("("+str+")/"+arr[0]);
                }
            }
            
            // B/A=C
            arrNew=new double[3];
            arrNew[0]=arr[1];
            arrNew[1]=arr[2];
            arrNew[2]=arr[3];
            
            anticipateNew=arr[0]/anticipate;
            cac=new Caculator(anticipateNew,arrNew);
            list=cac.fomulaList;
            if(list.size()>0){
                for(String str:list){
                    fomulaList.add(arr[0]+"/("+str+")");
                }
            }
            
            //  
            if(isEqual(arr[0]*arr[1]+arr[2]*arr[3],anticipate)){
                fomulaList.add(arr[0]+"*"+arr[1]+"+"+arr[2]+"*"+arr[3]);
            }
            
            if(isEqual(arr[0]*arr[1]-arr[2]*arr[3],anticipate)){
                fomulaList.add(arr[0]+"*"+arr[1]+"-"+arr[2]+"*"+arr[3]);
            }
            
            if(isEqual(arr[2]*arr[3]-arr[0]*arr[1],anticipate)){
                fomulaList.add(arr[2]+"*"+arr[3]+"-"+arr[0]+"*"+arr[1]);
            }
            
            
            if(isEqual(arr[0]/arr[1]+arr[2]/arr[3],anticipate)){
                fomulaList.add(arr[0]+"/"+arr[1]+"+"+arr[2]+"/"+arr[3]);
            }
            if(isEqual(arr[0]/arr[1]-arr[2]/arr[3],anticipate)){
                fomulaList.add(arr[0]+"/"+arr[1]+"-"+arr[2]+"/"+arr[3]);
            }
            if(isEqual(arr[2]/arr[3]-arr[0]/arr[1],anticipate)){
                fomulaList.add(arr[2]+"/"+arr[3]+"-"+arr[0]+"/"+arr[1]);
            }
            
            if(isEqual(arr[0]/arr[2]+arr[1]/arr[3],anticipate)){
                fomulaList.add(arr[0]+"/"+arr[2]+"+"+arr[1]+"/"+arr[3]);
            }
            if(isEqual(arr[0]/arr[2]-arr[1]/arr[3],anticipate)){
                fomulaList.add(arr[0]+"/"+arr[2]+"-"+arr[1]+"/"+arr[3]);
            }
            if(isEqual(arr[1]/arr[3]-arr[0]/arr[2],anticipate)){
                fomulaList.add(arr[1]+"/"+arr[3]+"-"+arr[0]+"/"+arr[2]);
            }
            
            if(isEqual(arr[0]/arr[3]+arr[1]/arr[2],anticipate)){
                fomulaList.add(arr[0]+"/"+arr[3]+"+"+arr[1]+"/"+arr[2]);
            }
            if(isEqual(arr[0]/arr[3]-arr[1]/arr[2],anticipate)){
                fomulaList.add(arr[0]+"/"+arr[3]+"-"+arr[1]+"/"+arr[2]);
            }
            if(isEqual(arr[1]/arr[2]-arr[0]/arr[3],anticipate)){
                fomulaList.add(arr[1]+"/"+arr[2]+"-"+arr[0]+"/"+arr[3]);
            }
        }
    }
    
    public void printFomula(){
        if(fomulaList!=null && fomulaList.size()>0){
            Set<String> set=new HashSet<String>();
            set.addAll(fomulaList);
            
            for(String str:set){
                System.out.println(str+"="+anticipate);
            }
        }else{
            // System.out.println(" "); //
        }
    }
    
    //  
    private static boolean isEqual(double d1,double d2){
        return Math.abs(d1-d2)<0.0001;
    }
    
    /**
     *  
     * @return
     */
    private List<String> getFomulaList(){
        List<String> retval=new ArrayList<String>();
        
        if(isEqual(op1-op2,anticipate)){
            retval.add(op1+"-"+op2);
        }
        
        if(isEqual(op2-op1,anticipate)){
            retval.add(op2+"-"+op1);
        }
        
        if(isEqual(op1+op2,anticipate)){
            retval.add(op1+"+"+op2);
        }
        
        if(isEqual(op1*op2,anticipate)){
            retval.add(op1+"*"+op2);
        }
        
        if(isEqual(op1/op2,anticipate)){
            retval.add(op1+"/"+op2);
        }
        
        if(isEqual(op2/op1,anticipate)){
            retval.add(op2+"/"+op1);
        }
        
        return retval;
    }
    
    public static void main(String[] args){
        double[] arr1={3,6,9,12};
        Caculator c1=new Caculator(24,arr1);
        c1.printFomula();
        
        System.out.println("-----------");
        
        List<double[]> list=new ArrayList<double[]>();
        list.add(new double[]{});
        

        list.add(new double[] { 8, 3, 3, 8 });
        list.add(new double[] { 3, 7, 3, 7 });
        list.add(new double[] { 12, 12, 12, 10 });
        list.add(new double[] { 10, 10, 4, 4 });
        list.add(new double[] { 1, 4, 5, 6 });
        list.add(new double[] { 2, 2, 2, 9 });
        list.add(new double[] { 3, 4, 7, 8 });
        list.add(new double[] { 11, 11, 1, 5 });
        list.add(new double[] { 1, 2, 7, 7 });
        list.add(new double[] { 7, 7, 4, 4 });
        list.add(new double[] { 1, 4, 5, 6 });
        list.add(new double[] { 1, 3, 4, 6 });
        list.add(new double[] { 5, 5, 5, 1 });
        
        for(double[] arr:list){
            Caculator c=new Caculator(arr);
            c.printFomula();
        }
        
    }
}

出力:
6.0/((9.0/12.0)/3.0)=24.0
12.0/((9.0/6.0)/3.0)=24.0
((3.0*12.0)/9.0)*6.0=24.0
(12.0/(9.0/6.0))*3.0=24.0
(12.0/(9.0/3.0))*6.0=24.0
12.0-(3.0-(6.0+9.0))=24.0
((12.0-3.0)+6.0)+9.0=24.0
((3.0+9.0)*12.0)/6.0=24.0
((3.0*12.0)*6.0)/9.0=24.0
((3.0/9.0)*12.0)*6.0=24.0
(6.0/(9.0/3.0))*12.0=24.0
((3.0*6.0)/9.0)*12.0=24.0
9.0-(3.0-(6.0+12.0))=24.0
((12.0-3.0)+9.0)+6.0=24.0
((6.0/9.0)*12.0)*3.0=24.0
((9.0-3.0)*6.0)-12.0=24.0
((9.0-3.0)+6.0)+12.0=24.0
12.0-((3.0-9.0)-6.0)=24.0
((3.0/9.0)*6.0)*12.0=24.0
((12.0+9.0)-3.0)+6.0=24.0
6.0-(3.0-(12.0+9.0))=24.0
((3.0+9.0)/6.0)*12.0=24.0
(9.0-(3.0-12.0))+6.0=24.0
((3.0*6.0)*12.0)/9.0=24.0
((6.0-3.0)+12.0)+9.0=24.0
12.0/(6.0/(3.0+9.0))=24.0
((6.0-3.0)+9.0)+12.0=24.0
((12.0/9.0)*6.0)*3.0=24.0
12.0-((3.0-6.0)-9.0)=24.0
6.0-((3.0-9.0)-12.0)=24.0
9.0-((3.0-12.0)-6.0)=24.0
((6.0/9.0)*3.0)*12.0=24.0
((9.0+12.0)+6.0)-3.0=24.0
3.0/((9.0/12.0)/6.0)=24.0
(6.0-(3.0-12.0))+9.0=24.0
((12.0/9.0)*3.0)*6.0=24.0
(3.0/(9.0/12.0))*6.0=24.0
((9.0-3.0)+12.0)+6.0=24.0
(3.0/(9.0/6.0))*12.0=24.0
((6.0*12.0)*3.0)/9.0=24.0
12.0/(9.0/(3.0*6.0))=24.0
(6.0-(3.0-9.0))+12.0=24.0
((6.0+12.0)+9.0)-3.0=24.0
((6.0+9.0)+12.0)-3.0=24.0
12.0/((9.0/3.0)/6.0)=24.0
6.0/(9.0/(3.0*12.0))=24.0
((6.0*12.0)/9.0)*3.0=24.0
6.0-((3.0-12.0)-9.0)=24.0
(9.0-(3.0-6.0))+12.0=24.0
3.0/(9.0/(6.0*12.0))=24.0
9.0-((3.0-6.0)-12.0)=24.0
((6.0+12.0)-3.0)+9.0=24.0
(12.0-(3.0-9.0))+6.0=24.0
6.0/((9.0/3.0)/12.0)=24.0
(6.0/(9.0/12.0))*3.0=24.0
(12.0-(3.0-6.0))+9.0=24.0
((6.0+9.0)-3.0)+12.0=24.0
3.0/((9.0/6.0)/12.0)=24.0
-----------
8.0/(3.0-(8.0/3.0))=24.0
((3.0/7.0)+3.0)*7.0=24.0
12.0*12.0-12.0*10.0=24.0
((10.0*10.0)-4.0)/4.0=24.0
6.0/((5.0/4.0)-1.0)=24.0
4.0/(1.0-(5.0/6.0))=24.0
((2.0+9.0)*2.0)+2.0=24.0
((9.0+2.0)*2.0)+2.0=24.0
8.0-((3.0-7.0)*4.0)=24.0
((7.0-3.0)*4.0)+8.0=24.0
((11.0*11.0)-1.0)/5.0=24.0
((7.0*7.0)-1.0)/2.0=24.0
(4.0-(4.0/7.0))*7.0=24.0
6.0/((5.0/4.0)-1.0)=24.0
4.0/(1.0-(5.0/6.0))=24.0
6.0/(1.0-(3.0/4.0))=24.0
(5.0-(1.0/5.0))*5.0=24.0