Corrigé codes secrets

Enoncé de l'exercice
Corrigé Python de l'exercice

Mission 1 - Retournement

Version 1 "Classique"

>> phrase = "je ne peux venir qu'à 0h15"

>> function retourne(ph) {
 var mots = ph.toUpperCase().split(" ")  // Mots en majuscules
 var final = []                          // On ajoutera les mots retournés dans final
 for (mot of mots) {                     // On parcourt les mots
   var lettres = mot.split("");          // Transformation d'un mot en une liste de lettres
   var inverse = lettres.reverse();      // Inversion de la liste
   final.push(inverse.join(""))          // Ajout dans final de la concaténation des lettres inversées
 }
 return final.join(" ")                  // On retourne la concaténation des mots inversés en les séparant par des espaces
}
>> retourne(phrase)
"EJ EN XUEP RINEV À'UQ 51H0"

Version 2 "Moderne"

>> var retourne = ph => ph.toUpperCase()
  .split(" ")           // On sépare en mot
  .map(mot => [...mot]  // Chaque mot est converti en liste de lettres
  .reverse()            // On inverse la liste
  .join("")             // On joint les lettres
  ).join(" ")           // On rassemble les mots avec des espaces

retourne(phrase)

Mission 2 - Miroir

Version 1 "Classique"

>> phrase = "ils debarquent demain !"

>> function miroir(ph) {
 var lettres = ph.toUpperCase().split("")
 var final = ""
 for (c of lettres) {
   if ("A" <= c && c <= "Z")
    final += String.fromCharCode(155 - c.charCodeAt(0))   // Voir le corrigé Python pour l'invariant 155
   else
     final += c
 }
 return final
}
>> miroir(phrase)
"ROH WVYZIJFVMG WVNZRM !"

Version 2 "Moderne"

var miroir = ph => [...ph.toUpperCase()] // Lettres en majuscules
 .map(c => // Pour chaque lettre
  "A" <= c && c <= "Z" ?  // Est-elle dans l'alphabet ?
   String.fromCharCode(155 - c.charCodeAt(0)) // Si oui miroir
   : c // sinon on la laisse
  )
  .join("") // On joint toutes les lettres

miroir(phrase)

Sans les commentaires :

var miroir = ph => [...ph.toUpperCase()].map(c => "A" <= c && c <= "Z" ? String.fromCharCode(155 - c.charCodeAt(0)) : c).join("")

Mission 3 - Snowden

Version "Moderne"

>> var snowden = tel => [...tel].map(n => "5987604321"[n]).join("") // Voir la vidéo pour l'explication
>> snowden("1618033988")
"9492577122"