Encodage : Cela se fait sous la forme d'un tableau d'entiers indiquant la présence, ou non, de chaque mot dans l'ordre d'apparition des mots du dictionnaire (1 pour présent, 0 pour absent). Si un mot est présent plusieurs fois dans la phrase alors il ne compte qu'une fois (uniquement des 1 et des 0 dans le tableau).
Ex:
String[] dictionnaire = {"il","deteste","les","tartes","aux","pommes","oeufs","aime"}
"il deteste les tartes aux pommes" -> String[] phraseEncodee = {1,1,1,1,1,1,0,0}
Calcul du taux de compression
Un taux de compression permet de calculer à quel point la séquence d'entiers a été compressée. Soit la formule :
taux_de_compression = taille_message_compressé / taille_message_non_compressé
Par exemple, sur le tableau {1,1,1,1,1,1,0,0} le taux de compression vaut 4/8 = 0.5
Principe de compression : En utilisant cette méthode de compression, le tableau {1,1,1,1,1,1,0,0} sera compressé en {6,1,2,0}. Dans la suite de l'exercice on supposera qu'on ne pourra jamais avoir plus de 9 chiffres identiques à la suite.
Je comprends pas comment on calcule le taux de compression avec cet énoncé ?
De plus, pour appliquer ce principe, je dois rédiger une méthode qui le calcule avec le code suivant :
class Compresseur {
/**
* Message non compressé.
*/
int[] messageNonCompresse;
/**
* Message compressé.
*/
int[] messageCompresse;
/**
* Taille du message compressé.
*/
int tailleMessageCompresse;
/**
* Taille maximale d'un texte compressé (100 = pire des cas).
*/
final int MAX_TAILLE_MESSAGE_COMPRESSE = 50 * 2;
/**
* Constructeur
*
* @param unMessageNonCompresse message non compressé
*/
Compresseur(int[] unMessageNonCompresse) {
messageCompresse = new int[MAX_TAILLE_MESSAGE_COMPRESSE];
tailleMessageCompresse = 0;
messageNonCompresse = unMessageNonCompresse;
}
/**
* Calcul du taux de compression.
*
* @return le taux de compression
*/
float tauxDeCompression() {
return 1.0f;
}
Mais du coup ne comprenant pas d'où proviennent le 4 et le 8 de l'exemple du taux de compression je ne sais pas comment résoudre le problème