You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.4 KiB
71 lines
1.4 KiB
# CAESAR CIPHER
|
|
|
|
### Angular js basics
|
|
|
|
|
|
## APP
|
|
|
|
Make a Caesar Cipher page that takes an input and encodes it with a Caesar Cipher and and displays the encoded input while the user is typing. (no submit button).
|
|
|
|
Also make it so the user can decode an encoded message.
|
|
|
|
|
|

|
|
|
|
|
|
### ANGULAR DIRECTIVES
|
|
|
|
- `ng-keyup`
|
|
- `ng-model`
|
|
|
|
|
|
### CAESAR CIPHER
|
|
|
|
https://en.wikipedia.org/wiki/Caesar_cipher
|
|
|
|
You can put this Caesar Cipher code in a separate js file (before your main `app.js`), and then reference the `caesarShift` function in your angular controller.
|
|
|
|
In the example in the above image, the `amount` is set to `12` for encoding, and `-12` for decoding.
|
|
|
|
```
|
|
var caesarShift = function(str, amount) {
|
|
|
|
// Wrap the amount
|
|
if (amount < 0)
|
|
return caesarShift(str, amount + 26);
|
|
|
|
// Make an output variable
|
|
var output = '';
|
|
|
|
// Go through each character
|
|
for (var i = 0; i < str.length; i ++) {
|
|
|
|
// Get the character we'll be appending
|
|
var c = str[i];
|
|
|
|
// If it's a letter...
|
|
if (c.match(/[a-z]/i)) {
|
|
|
|
// Get its code
|
|
var code = str.charCodeAt(i);
|
|
|
|
// Uppercase letters
|
|
if ((code >= 65) && (code <= 90))
|
|
c = String.fromCharCode(((code - 65 + amount) % 26) + 65);
|
|
|
|
// Lowercase letters
|
|
else if ((code >= 97) && (code <= 122))
|
|
c = String.fromCharCode(((code - 97 + amount) % 26) + 97);
|
|
|
|
}
|
|
|
|
// Append
|
|
output += c;
|
|
|
|
}
|
|
|
|
// All done!
|
|
return output;
|
|
|
|
};
|
|
``` |