package fruit.g4;

public class FruitGenerator implements fruit.sim.FruitGenerator
{
	private int[] dist;
	
    public int[] generate(int nplayers, int bowlsize) {
        int nfruits = nplayers * bowlsize;

        dist = new int[12];
        int distChoice = 2;
        
        if(distChoice == 1)
        	uniform(nfruits);
        else if(distChoice == 2)
        	halfFruits(nfruits);

        return dist;
    }
    
    private void uniform(int nfruits) {
        int unit = nfruits / 12;

        dist[0] = nfruits - unit * 11;
        for (int i = 1; i < 12; i++)
            dist[i] = unit;
    }
    
    private void halfFruits(int nfruits) {   	
    	int r;
    	int subset[] = new int[6];
    	boolean filled = false;
    	
    	for(int i=0; i < 6; i++) {
    		boolean unique;
    		do {
    			unique = true;
	    		r = (int)(Math.random()*12);
	    		for(int j=0; j < i; j++) {
	    			if(subset[j] == r)
	    				unique = false;
	    		}
    		}while(!unique);
    		subset[i] = r;
    	}
    	
    	while(nfruits > 0) {
    		r = (int)(Math.random()*subset.length);
    		dist[subset[r]]++ ;
    		nfruits--;
    	}
    }
}

@@ -78,17 +78,18 @@
 rator%0A%7B%0A
-%09
+  
 private 
@@ -100,17 +100,16 @@
 %5D dist;%0A
-%09
 %0A    pub
@@ -261,17 +261,9 @@
  2;%0A
-        
 %0A
+
     
@@ -294,17 +294,18 @@
         
-%09
+  
 uniform(
@@ -355,17 +355,18 @@
         
-%09
+  
 halfFrui
@@ -398,37 +398,33 @@
 urn dist;%0A    %7D%0A
-    
 %0A
+
     private void
@@ -591,20 +591,16 @@
 ;%0A    %7D%0A
-    
 %0A    pri
@@ -634,26 +634,23 @@
 ruits) %7B
-   %09
 %0A    
-%09
+  
 int r;%0A 
@@ -652,17 +652,18 @@
  r;%0A    
-%09
+  
 int subs
@@ -685,17 +685,18 @@
 6%5D;%0A    
+  
-%09
 boolean 
@@ -711,27 +711,23 @@
  false;%0A
+%0A
     
-%09%0A    %09
+  
 for(int 
@@ -749,18 +749,20 @@
 ) %7B%0A    
-%09%09
+    
 boolean 
@@ -773,18 +773,20 @@
 ue;%0A    
-%09%09
+    
 do %7B%0A   
@@ -786,19 +786,22 @@
 o %7B%0A    
+  
-%09%09%09
+    
 unique =
@@ -807,23 +807,26 @@
 = true;%0A
-%09
+     
     
-%09%09
+ 
 r = (int
@@ -846,23 +846,26 @@
 ()*12);%0A
-%09
     
-%09%09
+      
 for(int 
@@ -883,24 +883,28 @@
  j++) %7B%0A
-%09
+     
     
-%09%09%09
+   
 if(subse
@@ -918,17 +918,22 @@
  r)%0A
-%09    %09%09%09%09
+              
 uniq
@@ -948,23 +948,28 @@
 se;%0A
-%09
+     
     
-%09%09
+ 
 %7D%0A    
-%09%09
+    
 %7Dwhi
@@ -985,18 +985,20 @@
 e);%0A    
+  
-%09%09
+  
 subset%5Bi
@@ -1012,22 +1012,19 @@
     
-%09%7D
+  %7D%0A
 %0A    
-%09%0A    %09
+  
 whil
@@ -1044,18 +1044,20 @@
 ) %7B%0A    
-%09%09
+    
 r = (int
@@ -1092,18 +1092,20 @@
 h);%0A    
-%09%09
+    
 dist%5Bsub
@@ -1124,10 +1124,12 @@
     
+ 
-%09%09
+   
 nfru
@@ -1143,9 +1143,10 @@
     
-%09
+  
 %7D%0A  

Clean up and switch distribution