Problem
1. Cette question implique un raisonnement sur des chaînes composées de lettres majuscules. Vous implémenterez deux méthodes associées apparaissant dans la même classe (non illustrées). La première méthode prend un seul paramètre de chaîne et renvoie une version brouillée de cette chaîne. La deuxième méthode prend une liste de chaînes et modifie la liste en brouillant chaque entrée de la liste. Toute entrée qui ne peut pas être brouillée est supprimée de la liste.
a) Écrivez la méthode scrambleWord, qui prend un mot donné et renvoie une chaîne contenant une version brouillée du mot selon les règles suivantes.
- Le processus de brouillage commence à la première lettre du mot et se poursuit de gauche à droite.
- Si deux lettres consécutives consistent en un "A" suivi d'une lettre qui n'est pas un "A", puis les deux lettres sont permutées dans la chaîne résultante.
- Une fois que les lettres de deux positions adjacentes ont été échangées, aucune de ces deux positions ne peut être impliquée dans un futur échange.
Le tableau suivant montre plusieurs exemples de mots et leurs versions brouillées.
mot |
Résultat renvoyé par scrambleWord(word) |
"TAN" |
"TNA" |
"ABRACADABRA" |
"BARCADABARA" |
"WHOA" |
"WHOA" |
"AARDVARK" |
"ARADVRAK" |
"ŒUFS" |
"ŒUFS" |
"A" |
"A" |
"" |
"" |
Méthode complète scrambleWord ci-dessous.
/** Brouille un mot donné.
* @param word le mot à brouiller
* @return le mot brouillé (éventuellement égal à word)
* Condition préalable : le mot est soit une chaîne vide, soit ne contient que des lettres majuscules.
* Postcondition : la chaîne renvoyée a été créée à partir du mot comme suit :
* - le mot était brouillé, commençant à la première lettre et continuant de gauche à droite
* - deux lettres consécutives composées de "A" suivi d'une lettre qui n'était pas "A" ont été échangés
* - les lettres ont été échangées au plus une fois
*/
Chaîne public statique scrambleWord(Chaîne mot)
b) Écrivez la méthode scrambleOrRemove, qui remplace chaque mot du paramètre wordList par sa version brouillée et supprime tous les mots qui sont inchangés après le brouillage. L'ordre relatif des entrées dans wordList reste le même qu'avant l'appel à scrambleOrRemove.
L'exemple suivant montre comment le contenu de wordList serait modifié suite à l'appel de scrambleOrRemove.
Avant l'appel à scrambleOrRemove :
liste de mots
0 |
1 |
2 |
3 |
4 |
"TAN" |
"ABRACADABRA" |
"WHOA" |
"POMME" |
"ŒUFS" |
Après l'appel à scrambleOrRemove :
liste de mots
0 |
1 |
2 |
"TAN" |
"BARCADABARA" |
"PAPLE" |