import java.util.Arrays;


public class Tableaux2 {
	/**
	 * Correction exercice 1
	 * @param mat : une matrice carrée. Si la matrice n'est pas carrée, il y aura une erreur à l'exécution
	 * @return vrai si un élément d'une diagonale est nul
	 */
	public static boolean exercice1(int[][] mat) {
		for (int i=0 ; i < mat.length ; i++ ) {
			if (mat[i][i]==0 || mat[i][mat.length-i-1]==0) {
				return true;
			}
		}
		return false;
	}
	
	/**
	 * Correction exercice 2
	 * @param mat : une matrice. Si ce n'est pas une matrice (i.e. lignes de différentes longueur), le comportement n'est pas celui attendu
	 * @return vrai si la matrice est symétrique
	 */
	public static boolean exercice2(int[][] mat) {
		for (int i=0 ; i < mat.length ; i++ ) {
			for (int j=i ; j < mat[i].length ; j++ ) {
				if (mat[i][j]!=mat[j][i]) {
					return false;
				}
			}
		}
		return true;
	}
	
	/**
	 * traduit la chaine donnée en paramètre en utilisant le tableau de traduction dico
	 * @param chaine La chaîne à traduire. chaque mot est spéaré par un espace. Il n'y a pas de ponctuation dans la chaîne.
	 * @param dico Le tableau à deux dimension contenant des mot et leur traduction. Par exemple dico[1][0] est la traduction du mot dico[0][0]. Le mots originaux sont trié par ordre alphabétique.
	 * @return la chaine traduite
	 */
	public static String exercice3(String chaine, String[][] dico) {
		String traduction="";
		int idxCourant=0;
		while (idxCourant < chaine.length()) {
			int nextSpace = chaine.indexOf(' ', idxCourant);
			if (nextSpace==-1) {
				nextSpace=chaine.length();
			}
			String mot = chaine.substring(idxCourant, nextSpace);
			for (int i=0 ; i< dico[0].length ; i++ ) {
				int comp = dico[0][i].compareTo(mot);
				if (comp==0) { // on a trouvé le mot dans dico
					traduction+=dico[1][i]+" ";
					break;
				}
				else if (comp>0) { // le mot est plus grand que le mot courant du dictionnaire. On conclu que le mot n'est pas dans le dico
					traduction+="* ";
					break;
				}
			}
			idxCourant=nextSpace+1;
		}
		return traduction;
	}
	
	/**
	 * remplit de façon aléatoire un tableau à deux dimensions de taille 10x10 
	 * avec les entiers de 1 à 100. Une fois créé, ce tableau est affiché.
	 */
	public static void exercice4a() {
		int[][] mat = new int[10][10];
		for (int i=0 ; i < mat.length ; i++ ) {
			for (int j=0 ; j< mat[i].length ; j++ ) {
				mat[i][j] = (int) (Math.random()*100)+1;
			}
		}
		System.out.println(Arrays.deepToString(mat));
	}
	
	/**
	 * remplit de façon aléatoire un tableau à deux dimensions dont le nombre de lignes et 
	 * le nombre de colonnes pour chaque ligne sont choisis de façon aléatoire entre 5 et 20. 
	 * Ce tableau est rempli de façon aléatoire par les entiers de 1 à n, 
	 * où n est le nombre total des éléments du tableau créé. 
	 * Ce tableau est ensuite affiché.
	 */
	public static void exercice4b() {
		int nbLignes = (int) (Math.random()*16)+5;
		int nbColonnes = (int) (Math.random()*16)+5;
		int nbElem = nbLignes*nbColonnes;
		int[][] mat = new int[nbLignes][nbColonnes];
		for (int i=0 ; i < mat.length ; i++ ) {
			for (int j=0 ; j< mat[i].length ; j++ ) {
				mat[i][j] = (int) (Math.random()*nbElem)+1;
			}
		}
		System.out.println(Arrays.deepToString(mat));
	}
	
	public static void main(String[] args) {
		/* Exercice 1 */
		int[][] mat1 = new int[][] {{9,6,8,5,4,3},
									{5,1,2,0,5,3},
									{1,2,3,6,9,0},
									{0,1,4,6,7,7},
									{3,0,2,3,8,0},
									{7,8,0,6,6,9}};
		int[][] mat2 = new int[][] {{2,0,5,8,9,6},
									{3,2,6,6,9,5},
									{8,7,8,1,0,0},
									{9,6,5,8,2,3},
									{0,4,0,6,9,8},
									{3,6,4,3,3,8}};
		System.out.println("exercice1 - mat 1 :"+exercice1(mat1));
		System.out.println("exercice1 - mat 2 :"+exercice1(mat2));
		
		/* Exercice 2 */
		System.out.println("exercice2 - mat 1 :"+exercice2(mat1));
		System.out.println("exercice2 - mat 2 :"+exercice2(mat2));
		System.out.println("exercice2 - mat 3 :"+exercice2(new int[][]{{1,2,3},{2,1,4},{3,4,1}}));
		
		/* Exercice 3 */
		String[][] dico = new String[][]{	{"baleine","bateau","chante","dort","la","le","lion","mange","souris","train"},
											{"whale","boat","sings","sleeps","the","the","lion","eats","mouse","train"}};
		
		System.out.println(exercice3("le beau lion mange la souris",dico));
		
		/* Exercice 4 */
		exercice4a();
		
		/* Exercice 4b */
		exercice4b();
	}
	
}
