public class DecRle {
  public static void main(String []args) {
    byte []code = {
      52, // longueur d'une ligne
      5,1,2,1,14,1,2,1,24,1,  // alternance longueur blanc, longueur noir
      2,1,8,1,8,1,8,1,21,1,   // chaque début de ligne démarre en blanc
      1,1,10,1,6,1,10,1,15,6, // les grandes longueurs >30 sont codées 31, puis
      1,1,10,1,6,1,10,1,15,6, // le reste de la longueur, Par ex: 33 est codé
      2,1,8,1,8,1,8,1,21,1,   // 31, 2 (pas de changement de longueur!)
      5,1,2,1,14,1,2,1,24,1,  // 65 serait codé : 31, 31, 1, etc.
      31, 20, 1, 0, 31, 21};
    int longueurLigne = code[0];
    boolean couleur = false;
    int nombreDeCaracteresAffiches = 0;
    for (int i=1; i<code.length; i++) {
      int nombre = code[i]; // longueur de blancs ou noirs
      for (int j=0; j<nombre; j++) {
        System.out.print(couleur?'*':' '); // un blanc ou un noir
        nombreDeCaracteresAffiches++;
      }
      if (nombreDeCaracteresAffiches==longueurLigne) { // nouvelle ligne...
        System.out.println();
        couleur = false;
        nombreDeCaracteresAffiches = 0;
      } else {
        if (nombre!=31) // codage spécial pour les grandes longueurs...
          couleur = !couleur;
      }
    }
  }
}