CS 100: Lecture L15

March 16

| Back to Lecture Index |


// The Perfect Shuffle with n=8.

import java.io.*;

public class L15A
{	
	public static void main(String args[])
	{
       TokenReader in = new TokenReader(System.in);
	   
	   // Set up and display a short array:
	   
	   int[] a = {10,20,30,40,50,60,70,80};
	   System.out.println(a[0]+" "+a[1]+" "+a[2]+" "+a[3]+" "+a[4]+" "+a[5]+" "+a[6]+" "+a[7]);
	
	   // n= 8 version of the perfect shuffle:
	   int[] b = new int[8];
	   b[0] = a[0]; b[1] = a[4];
	   b[2] = a[1]; b[3] = a[5];
	   b[4] = a[2]; b[5] = a[6];
	   b[6] = a[3]; b[7] = a[7];
	   
	   // Same thing by loop:
	   
	   for(int i=0;i<4;i++)
	   {
	      b[2*i] = a[i]; b[2*i+1] = a[i+4];
	   }
	   
	   // Display b:
	   
	   System.out.println(b[0]+" "+b[1]+" "+b[2]+" "+b[3]+" "+b[4]+" "+b[5]+" "+b[6]+" "+b[7]);
		
	   // Shuffle it again:
           for(int i=0;i<8;i++)
           {
              a[i] = b[i];
           }	   
	   for(int i=0;i<4;i++)
	   {
	      b[2*i] = a[i]; b[2*i+1] = a[i+4];
	   }
	   
	   // Display the modified b:
	   
	   System.out.println(b[0]+" "+b[1]+" "+b[2]+" "+b[3]+" "+b[4]+" "+b[5]+" "+b[6]+" "+b[7]);
		
	   in.waitUntilEnter();
	}

}

import java.io.*;
import java.awt.*;

public class ShowShuffle extends Frame
{
    
    public void Shuffle(Color[] a)
    {
       int n = a.length;
       Color[] b = new Color[n];
       for(int k=0;k<n/2;k++)
       {
          b[2*k] = a[k];
          b[2*k+1] = a[k+26];  
       }
       for(int k=0;k<n;k++)
          a[k] = b[k];
    }
    
    public void Rainbow(Graphics g,Color[] a, int hL,int vT, int w)
    {
       int h=hL;
       for(int k=0;k<52;k++)
	   {
	      g.setColor(a[k]);
	      g.fillRect(h,vT,w,2*w);
	      g.setColor(Color.black);
	      g.drawRect(h,vT,w,2*w);
	      if (k==25)
	         h = h+w+8; 
	      else
	         h = h+w; 
       }
    }
    
	public void paint(Graphics g)
	{
	   Color[] D = new Color[52];;
	   int b = 150;
	   int s = 8;
	   int p;
	   for(int k=0;k<13;k++)
	   {
	      p = b+s*k;
	      D[k]    = new Color(p,0,0);
	      D[k+13] = new Color(0,p,0);
	      D[k+26] = new Color(0,0,p);
	      D[k+39] = new Color(p,p,0);
	   }
	   int hL = 20;
	   int vT = 30;
	   int v = vT;
	   int w = 18;
	   Rainbow(g,D,hL,v,w);
	   for(int q=1;q<=8;q++)
	   {
	      Shuffle(D);
	      v = v+4*w;
	      Rainbow(g,D,hL,v,w);
	   }
	}
	
}

public class L15C
{
	public static void main(String args[])
	{
		ShowShuffle d = new ShowShuffle();
		d.resize(1000,800);                     
		d.move(0,75);
		d.setTitle("Drawing");                
		d.show();
		d.toFront();
	}
}