---
title: 'Homework 4: Cipher'
author: Your Name
output: html_document
---

[Download the starter qmd file here](https://raw.githubusercontent.com/srvanderplas/unl-stat151/main/homework/04-cipher.qmd)


This assignment is modified from the [decodeR](https://github.com/kbodwin/decodeR) exercises by Kelly Bodwin and Allison Theobold.

Once you finish this assignment in R, think about how you might decode the message in python. For +5 extra credit, write python code that decodes the message, following the outline of the R code you've already written.

In this assignment, you will be creating and manipulating vectors, lists, and data frames to uncover a top secret message.

Some advice:

* Work with those around you
* Google is your friend!  If an error is confusing, copy it into Google and see what other people are saying.  If you don't know how to do something, search for it.
* Just because there is no error message doesn't mean everything went smoothly.  Use the console to check each step and make sure you have accomplished what you wanted to accomplish.



## Part One: Setup

Each of the following R chunks will cause an error and/or do the desired task incorrectly.  
Find the mistake, and correct it to complete the intended action. 

**For each error, write 1-2 sentences to reflect on what the mistake was and how you found it and fixed it.**

1. Create vectors containing the upper case letters, lower case letters, and some punctuation marks.

```{r, error = T}
lower_case <- c("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")

upper_case <- c("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")

punctuation <- c(".", ",", "!", "?", "'", """, "(", ")", " ", "-", ";", ":")

```

2. Make one long vector containing all the symbols.

```{r, error = T}

my_symbols <- cbind(lower_case, upper_case, punctuation)

```

3. Turn the `my_symbols` vector into a data frame, with the variable name "Symbol"

```{r, error = T}
my_symbols <- dataframe(my_symbols)
names(my_symbols) = Symbol
```


4. Find the total number of symbols we have in our data frame.  

```{r, error = T}
len <- length(my_symbols)
```


5. Create a new variable in your dataframe that assigns a number to each symbol.

```{r, error = T}
my_symbols%Num <- 1:len
```



## Part Two: Decoding the secret message.

This chunk will load up the encoded secret message as a vector:

```{r}

top_secret <- read.csv("https://raw.githubusercontent.com/srvanderplas/unl-stat151/main/homework/04_Secret_Code", header = FALSE)$V1

```

By altering this top secret set of numbers, you will be able to create a message.  Write your own code to complete the steps below.

1. Add 14 to every number.
2. Multiply every number by 18, then subtract 257.
3. Exponentiate every number.  (That is, do e^[number].)
4. Square every number.

**Checkpoint:** Headquarters has informed you that at this stage of decoding, there should be 352 numbers in the secret message that are below 17.

5. Turn your vector of numbers into a matrix with 5 columns.
6. Separately from your top secret numbers, create a vector of all the even numbers between 1 and 382. Name it "evens". That is, "evens" should contain 2, 4, 6, 8 ..., 382.
7. Subtract the "evens" vector from the first column of your secret message matrix.
8. Subtract 100 from all numbers in the 18-24th rows of the 3rd column.
9. Multiply all numbers in the 4th and 5th column by 2.
10. Turn your matrix back into a vector.

**Checkpoint:** Headquarters has informed you that at this stage of decoding, all numbers in indices 500 and beyond are below 100.


11. Take the square root of all numbers in indices 38 to 465.
12. Round all numbers to the nearest whole number.
13. Replace all instances of the number 39 with 20.

**Checkpoint:** Headquarters has informed you that your final message should have 344 even numbers.


## Part 3: The secret message!

Use your final vector of numbers as indices for `my_symbols` to discover the final message!  
Google the first line of this message, if you do not recognize it, to see what it is.


Write 3-4 sentences about what you learned from this investigation. What problems did you encounter, and how did you solve them?

