Внедрить ROT-13 в R - PullRequest
       3

Внедрить ROT-13 в R

4 голосов
/ 20 января 2011

Мне нужна функция, которая при передаче строки, содержащей только буквы, поворачивает каждую букву в строке через алфавит на X символов, где X - параметр функции. Известный пример этого - когда X = 13, что называется ROT-13

function ?? }

Это та вещь, которую я ожидал бы сделать с помощью волшебника R всего за несколько строк, тогда как в итоге получилось бы 10 или больше.

Ответы [ 2 ]

6 голосов
/ 20 января 2011

См. ?chartr (раздел Примеры):

rot <- function(ch, k = 13) {
   p0 <- function(...) paste(c(...), collapse="")
   A <- c(letters, LETTERS, " '")
   I <- seq_len(k)
   chartr(p0(A), p0(c(A[-I], A[I])), ch)
}

или здесь http://rosettacode.org/wiki/Rot-13#R:

rot13 <- function(x)
{
  old <- paste(letters, LETTERS, collapse="", sep="")
  new <- paste(substr(old, 27, 52), substr(old, 1, 26), sep="")
  chartr(old, new, x)
}
3 голосов
/ 20 января 2011
rotX <- function(ch,x) 
{ #rotate each letter of a string ch by x letters thru the alphabet, as long as x<=13
  old <- paste(letters, LETTERS, collapse="", sep="")
  new <- paste(substr(old, 2*x+1, 26*2), substr(old, 1, 26), sep="")
  chartr(old, new, ch)
}

Это исправляет обе проблемы, которые я отметил в своем комментарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...