Cod sursa(job #1490998)

Utilizator gse4meVlad Sandulean gse4me Data 24 septembrie 2015 16:46:04
Problema Fractal Scor 0
Compilator java Status done
Runda Arhiva de probleme Marime 1.77 kb
public class HelloWorld{



    static int fractal(int k,int x, int y,int [] Cadrane)
    {
        //find out where the coords lie

        if (k==0) return 0;

        int size= ((int) Math.pow(2, k));
        System.out.print("\nk= "+k+" 2^k="+size);

        int xaxis=x>(size/2)?2:1;//>0?0:1;
        int yaxis=y>(size/2)?2:1;//>0?0:1;

        System.out.print("  " + x + "," + y + " are in: "+xaxis+","+yaxis);

        int cadran=0;
        if (xaxis==1) {
            if (yaxis==1) {
                cadran = 1;
            }else cadran = 2;
        }else{
            if (yaxis==1){
                cadran=4;
            }else{
                cadran=3;
            }
        }
        System.out.print("  Cadran: "+cadran);

        int sum=0;
        for (int i=0;i<Cadrane.length;i++){
            System.out.print(" Cadran curent:" +Cadrane[i]);
            if (Cadrane[i]!=cadran)
               sum=sum+(int)Math.pow(2,k*2-2);
            else
                break;
        }



        int[] newCadrane;
       if (cadran==1){
           newCadrane=new int[]{1,4,3,2};
       }else if (cadran==2){
           newCadrane=new int[]{1,2,3,4};
           y=y-size/2;
       }else if(cadran==3){
           newCadrane=new int[]{1,2,3,4};
           x=x-size/2;
           y=y-size/2;
       }else{
           newCadrane=new int[]{3,2,1,4};
           x=x-size/2;
       }

        System.out.print(" Adding:"+ sum);
        return sum+fractal(k-1,x,y, newCadrane);

    }


   public static void main (String[] args){


       System.out.println("Hello World!");


       int k=3;
       int x=2;
       int y=3;

       int [] Cadrane={1,2,3,4};
       System.out.println("\nRezultat: "+fractal(k,x,y,Cadrane));


   }
}