public class LotoQuine {
  
  static int hasard(int bi,int bf) {
    return (int)(bi+Math.random()*(bf-bi+1));
  }
  
  static void affecterNombres(int [][] crt,int cln,int bi,int bf) {
    int nb;
    for ( int l = 0 ; l < 3 ; l = l+1 ) {
      if ( crt[l][cln] == 99 ) {
        do {
          nb = hasard(bi,bf); }
        while ( ( nb == crt[0][cln] ) || ( nb == crt[1][cln] ) || ( nb == crt[2][cln] ) );
        crt[l][cln] = nb; } }
  }
  
  static int [][] carton() {
    int [][] crt = new int[3][9];
    int [] nbl = new int[3];
    int lgn;
    int cln;
    /* Affectation d'un nombre 99                 */
    /* sur chaque colonne en placant au maximum   */
    /* 5 nombres 99 sur la même ligne             */
    for ( int c = 0 ; c < 9 ; c = c+1 ) {
      do {
        lgn = hasard(0,2); }
      while ( nbl[lgn] == 5 );
      nbl[lgn] = nbl[lgn]+1;
      crt[lgn][c] = 99; }
    /* Affectation sur chaque ligne d'autant      */
    /* de nombres 99 qu'il le faut pour arriver   */
    /* à 5 nombres 99 par ligne                   */
    for ( int l = 0 ; l < 3 ; l = l+1 ) {
      for ( int i = nbl[l] ; i < 5 ; i = i+1 ) {
        do {
          cln = hasard(0,8); }
        while ( crt[l][cln] == 99 );
        crt[l][cln] = 99; } }
    /* Affectation des nombres définitifs en lieu */
    /* et place des 99                            */
    affecterNombres(crt,0,1,9);
    for ( int i = 1 ; i < 8 ; i = i+1 ) {
      affecterNombres(crt,i,i*10,i*10+9); }
    affecterNombres(crt,8,80,90);
    return crt;
  }
  
  static void affichage(int [][] crt) {
    for ( int l = 0 ; l < 3 ; l = l+1 ) {
      for ( int c = 0 ; c < 9 ; c = c+1 ) {
        Ecran.formater("%3d",crt[l][c]); }
      Ecran.sautDeLigne(); }
  }
  
  public static void main(String [] args) {
    int [][] carton = carton();
    affichage(carton);
  }
}