まず、暗号化パターンを与える関数を作成しました
plugboard <- function(){
matrix(sample(letters, 26), nrow = 2, ncol = 13)
}
これにより、すべての文字(小文字)が別の文字とペアになっているマトリックスが得られます。
今、私はこの暗号化でコード化またはデコードする別の関数を作成する必要があります。
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
[1,] "v" "h" "k" "a" "w" "l" "f" "d" "u" "r" "t" "m" "s"
[2,] "p" "q" "b" "g" "x" "y" "i" "n" "z" "o" "j" "e" "c"
次に、この新しい関数「HOUSE」または「house」を入力すると、「qrzcm」が表示され、「qrzcm」と入力すると、「house」が表示されます。
私は次のことを試みました:
ATdecoder <- function(word){
word <- x
pat <- data.frame(plugboard())
tolower(x)
x = gsub(pat$V1, pat$V2, x)
}
しかし、私はこれを機能させるのに苦労しています。
助けてください
あなたは種をまく必要があります、私はあなたの家の例を再現することはできません。ほとんどの場合、関数の外部でデコーダーを宣言する必要があります。そうしないと、毎回異なります。
2つのこと、1)入力文字列を個々の文字に分割する必要があり、2つは、それらをマトリックスの最初の行に一致させ、2番目の行を呼び出すことです。
最初の行が列名として認識されないため、data.frameにすることは役に立ちません。
行う:
plugboard <- function(){
matrix(sample(letters, 26), nrow = 2, ncol = 13)
}
set.seed(111)
pat <- plugboard()
pat
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
[1,] "n" "s" "e" "h" "m" "d" "y" "i" "a" "v" "r" "u" "p"
[2,] "t" "o" "c" "q" "j" "w" "x" "z" "g" "l" "f" "k" "b"
ATdecoder <- function(word,pat){
x <- unlist(strsplit(tolower(word),""))
if(all(x %in% pat[1,])){
paste(pat[2,match(x,pat[1,])],collapse="")
}else{
paste(pat[1,match(x,pat[2,])],collapse="")
}
}
ATdecoder("pave",pat)
[1] "bglc"
> ATdecoder("bglc",pat)
[1] "pave"
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加