Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package patchwork;
- import java.lang.IllegalArgumentException;
- import java.util.Random;
- /**
- *
- * @author G38170
- */
- public class PatchWork {
- private int[][] morceaux;
- public PatchWork(int[][] tab){
- if(tab == null){
- throw new IllegalArgumentException("Ce tableau n'existe pas");
- }
- if(tab.length == tab[0].length){
- throw new IllegalArgumentException("Ce tableau n'est pas rectangle");
- }
- morceaux=tab;
- Random r = new Random();
- for(int i=0;i<morceaux.length;i++){
- for(int j=0;j<morceaux[0].length;j++){
- morceaux[i][j]=1 + r.nextInt(8);
- }
- }
- }
- public int compterTaches(){
- boolean[][] bitMap=new boolean[morceaux.length][morceaux[0].length];
- for(int i=0;i<morceaux.length;i++){
- for(int j=0;j<morceaux[0].length;j++){
- bitMap[i][j]=false;
- }
- }
- int nombreTache=0;
- for(int i=0;i<morceaux.length;i++){
- for(int j=0;j<morceaux[0].length;j++){
- if(bitMap[i][j]==false){
- bitMap[i][j]=true;
- if(verifierVoisin(bitMap, morceaux[i][j], 1, i ,j)>1){
- nombreTache++;
- }
- }
- }
- }
- return nombreTache;
- }
- private int verifierVoisin(boolean[][] bitMap, int value, int morceau, int line, int column){
- if((column+1<morceaux[0].length)&&(!bitMap[line][column+1])){
- if(morceaux[line][column+1]==value){
- morceau++;
- bitMap[line][column+1]=true;
- morceau=verifierVoisin(bitMap, value, morceau, line, column+1);
- }
- }
- if((line+1<morceaux.length)&&(!bitMap[line+1][column])){
- if(morceaux[line+1][column]==value){
- morceau++;
- bitMap[line+1][column]=true;
- morceau=verifierVoisin(bitMap, value, morceau, line+1, column);
- }
- }
- if((line>0)&&(!bitMap[line-1][column])){
- if(morceaux[line-1][column]==value){
- morceau++;
- bitMap[line-1][column]=true;
- morceau=verifierVoisin(bitMap, value, morceau, line-1, column);
- }
- }
- if((column>0)&&(!bitMap[line][column-1])){
- if(morceaux[line][column-1]==value){
- morceau++;
- bitMap[line][column-1]=true;
- morceau=verifierVoisin(bitMap, value, morceau, line, column-1);
- }
- }
- return morceau;
- }
- @Override public String toString(){
- String s="";
- for(int i=0;i<morceaux.length;i++){
- for(int j=0;j<morceaux[0].length;j++){
- s=s+(morceaux[i][j]+" ");
- }
- s=s+"\n";
- }
- return s;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement