From e92a00f63b2d5a0e880fdd0c7271ebf793dd0b28 Mon Sep 17 00:00:00 2001 From: cibiosdev Date: Sun, 25 Oct 2020 22:37:55 -0500 Subject: [PATCH] Swift - Problem Caesar Chiper Hacker rank challenge Problem Caesar Chiper Hacker rank challenge --- Swift/CaesarCipher.playground/Contents.swift | 93 ++++++++++++++++++ .../contents.xcplayground | 4 + .../contents.xcworkspacedata | 7 ++ .../UserInterfaceState.xcuserstate | Bin 0 -> 18262 bytes 4 files changed, 104 insertions(+) create mode 100644 Swift/CaesarCipher.playground/Contents.swift create mode 100644 Swift/CaesarCipher.playground/contents.xcplayground create mode 100644 Swift/CaesarCipher.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 Swift/CaesarCipher.playground/playground.xcworkspace/xcuserdata/camiloibarrayepes.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/Swift/CaesarCipher.playground/Contents.swift b/Swift/CaesarCipher.playground/Contents.swift new file mode 100644 index 0000000..748cc58 --- /dev/null +++ b/Swift/CaesarCipher.playground/Contents.swift @@ -0,0 +1,93 @@ +// Problem Caesar Chiper +// Hacker rank challenge +// https://www.hackerrank.com/challenges/caesar-cipher-1/problem +/* +Julius Caesar protected his confidential information by encrypting it using a cipher. Caesar's cipher shifts each letter by a number of letters. If the shift takes you past the end of the alphabet, just rotate back to the front of the alphabet. In the case of a rotation by 3, w, x, y and z would map to z, a, b and c. + + Original alphabet: abcdefghijklmnopqrstuvwxyz + Alphabet rotated +3: defghijklmnopqrstuvwxyzabc + + For example, the given cleartext s=There's-a-starman-waiting-in-the-sky and the alphabet is rotated by k=3. The encrypted string is Wkhuh'v-d-vwdupdq-zdlwlqj-lq-wkh-vnb. + + Note: The cipher only encrypts letters; symbols, such as -, remain unencrypted. + + Function Description + + Complete the caesarCipher function in the editor below. It should return the encrypted string. + + caesarCipher has the following parameter(s): + + s: a string in cleartext + k: an integer, the alphabet rotation factor + Input Format + + The first line contains the integer, , the length of the unencrypted string. + The second line contains the unencrypted string, . + The third line contains , the number of letters to rotate the alphabet by. + + Constraints + + 1 <= n <= 100 + 0 <= k <= 100 + + + is a valid ASCII string without any spaces. + + Output Format + + For each test case, print the encoded string. + + Sample Input + + 11 + middle-Outz + 2 + Sample Output + + okffng-Qwvb + Explanation + + Original alphabet: abcdefghijklmnopqrstuvwxyz + Alphabet rotated +2: cdefghijklmnopqrstuvwxyzab + + m -> o + i -> k + d -> f + d -> f + l -> n + e -> g + - - + O -> Q + u -> w + t -> v + z -> b + +*/ + +func encryptInput(input: String, rotation: Int) -> String { + var encryptedString = String() + for char in input.unicodeScalars { + var code = Int(char.value) + // is lowercased letter + if (97...122).contains(char.value) { + code += rotation + while code > 122 { + // reduce until in char range + code -= (122 - 96) + } + // is uppercased letter + } else if (65...90).contains(char.value) { + code += rotation + while code > 90 { + // reduce until in char range + code -= (90 - 64) + } + } + encryptedString += String(Character(UnicodeScalar(code)!)) + } + return encryptedString +} + +encryptInput(input: "hola", rotation: 1) +encryptInput(input: "hello", rotation: 2) +encryptInput(input: "test", rotation: 3) diff --git a/Swift/CaesarCipher.playground/contents.xcplayground b/Swift/CaesarCipher.playground/contents.xcplayground new file mode 100644 index 0000000..a751024 --- /dev/null +++ b/Swift/CaesarCipher.playground/contents.xcplayground @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Swift/CaesarCipher.playground/playground.xcworkspace/contents.xcworkspacedata b/Swift/CaesarCipher.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Swift/CaesarCipher.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Swift/CaesarCipher.playground/playground.xcworkspace/xcuserdata/camiloibarrayepes.xcuserdatad/UserInterfaceState.xcuserstate b/Swift/CaesarCipher.playground/playground.xcworkspace/xcuserdata/camiloibarrayepes.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..18eeb6becff983223054885bb5eb3098be15f687 GIT binary patch literal 18262 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