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;
}
}
}
}