Advertisement
Deathyzz

PatchWork.java

Sep 20th, 2014
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.04 KB | None | 0 0
  1. package patchwork;
  2. import java.lang.IllegalArgumentException;
  3. import java.util.Random;
  4.  
  5. /**
  6.  *
  7.  * @author G38170
  8.  */
  9. public class PatchWork {
  10.  
  11.     private int[][] morceaux;
  12.    
  13.     public PatchWork(int[][] tab){
  14.         if(tab == null){
  15.             throw new IllegalArgumentException("Ce tableau n'existe pas");
  16.         }
  17.        
  18.         if(tab.length == tab[0].length){
  19.             throw new IllegalArgumentException("Ce tableau n'est pas rectangle");
  20.         }
  21.        
  22.         morceaux=tab;
  23.         Random r = new Random();
  24.         for(int i=0;i<morceaux.length;i++){
  25.             for(int j=0;j<morceaux[0].length;j++){
  26.                 morceaux[i][j]=1 + r.nextInt(8);
  27.             }
  28.         }
  29.        
  30.     }
  31.    
  32.     public int compterTaches(){
  33.        
  34.         boolean[][] bitMap=new boolean[morceaux.length][morceaux[0].length];
  35.         for(int i=0;i<morceaux.length;i++){
  36.             for(int j=0;j<morceaux[0].length;j++){
  37.                 bitMap[i][j]=false;
  38.             }
  39.         }
  40.         int nombreTache=0;
  41.        
  42.         for(int i=0;i<morceaux.length;i++){
  43.             for(int j=0;j<morceaux[0].length;j++){
  44.                 if(bitMap[i][j]==false){
  45.                     bitMap[i][j]=true;
  46.                     if(verifierVoisin(bitMap, morceaux[i][j], 1, i ,j)>1){
  47.                         nombreTache++;
  48.                     }
  49.                 }
  50.             }
  51.         }
  52.         return nombreTache;
  53.     }
  54.    
  55.     private int verifierVoisin(boolean[][] bitMap, int value, int morceau, int line, int column){
  56.         if((column+1<morceaux[0].length)&&(!bitMap[line][column+1])){
  57.             if(morceaux[line][column+1]==value){
  58.                 morceau++;
  59.                 bitMap[line][column+1]=true;
  60.                 morceau=verifierVoisin(bitMap, value, morceau, line, column+1);
  61.             }
  62.         }
  63.        
  64.         if((line+1<morceaux.length)&&(!bitMap[line+1][column])){
  65.             if(morceaux[line+1][column]==value){
  66.                 morceau++;
  67.                 bitMap[line+1][column]=true;
  68.                 morceau=verifierVoisin(bitMap, value, morceau, line+1, column);
  69.             }
  70.         }
  71.        
  72.         if((line>0)&&(!bitMap[line-1][column])){
  73.             if(morceaux[line-1][column]==value){
  74.                 morceau++;                
  75.                 bitMap[line-1][column]=true;
  76.                 morceau=verifierVoisin(bitMap, value, morceau, line-1, column);
  77.             }
  78.         }
  79.        
  80.         if((column>0)&&(!bitMap[line][column-1])){
  81.             if(morceaux[line][column-1]==value){
  82.                 morceau++;
  83.                 bitMap[line][column-1]=true;
  84.                 morceau=verifierVoisin(bitMap, value, morceau, line, column-1);
  85.             }
  86.         }
  87.         return  morceau;
  88.     }
  89.    
  90.  
  91.    
  92.     @Override public String toString(){
  93.         String s="";
  94.         for(int i=0;i<morceaux.length;i++){
  95.             for(int j=0;j<morceaux[0].length;j++){
  96.                 s=s+(morceaux[i][j]+" ");
  97.             }
  98.             s=s+"\n";
  99.         }
  100.         return s;
  101.     }
  102.    
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement