Le chiffre de César

Voici la version la plus courte à laquelle je sois parvenu du chiffre de César :

rot <- function(x, n = 13) {
      ix <- (match(strsplit(x, "")[[1]], letters) + n) %% 26
      res <- paste(letters[ix], collapse = "")
      return(res)
}

Exemples :

> rot("bonjour", 13)
[1] "obawbhe"
> rot(rot("bonjour", 3), -3)
[1] "bonjour"
> rot(rot("bonjour", 13), 13)
[1] "bonjour"

Notez qu'elle pourrait tenir en une ligne et que pour traiter n'importe quel type de texte, il suffit de créer un vecteur plus complet que letters.

Aucun commentaire:

Enregistrer un commentaire