Written by
Amy
on
on
Caesar cipher 알고리즘
시저 암호: 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 함수입니다. (단, 대소문자 고려)
입력값과 알파벳을 비교하여, Key 만큼 밀린 배열을 반환하는 함수
func ceasar(data:[String], keyNum:Int) -> Array<String>
{
let alphabet:[String] = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
let Alphabet:[String] = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
// String을 담은 배열을 하나 만들어서, 알파벳 배열과 비교
var dataCeasar:[String] = data
var dataResult:[String] = []
for i in 0..<dataCeasar.count {
for j in 0..<26 {
if (j < 26-keyNum) && (alphabet[j] == dataCeasar[i]) {
dataResult.append(alphabet[j+keyNum])
}else if (j < 26-keyNum) && (Alphabet[j] == dataCeasar[i]) {
dataResult.append(Alphabet[j+keyNum])
}else if (j >= 26-keyNum) && (alphabet[j] == dataCeasar[i]) {
dataResult.append(alphabet[(j+keyNum)%26])
}else if (j >= 26-keyNum) && (Alphabet[j] == dataCeasar[i]) {
dataResult.append(Alphabet[(j+keyNum)%26])
}
}
}
return dataResult
}
print(ceasar(data:["a", "B", "W", "z"], keyNum:4))
알파벳 배열 쉽게 만들기
var alphabet: [Character] = []
for abc in "abcdefghijklmnopqrstuvwxyz".characters
{
alphabet.append(abc)
}
print(alphabet)