--- author: "Write your name here" number: STUDENT_NUMBER title: "Homework 3" subtitle: "Computing in Molecular Biology 1 – Molecular Biology and Genetics Department" description: "Rehearsal for Midterm Exam" date: "November 17, 2020" output: html_document: number_sections: yes self_contained: no editor_options: chunk_output_type: inline --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) ``` # Logic operations For the following questions you will use `X` and `Y` defined as follows ```{r} X <- rep(c(TRUE, FALSE), 2) X Y <- rep(c(TRUE, FALSE), c(2, 2)) Y ``` These are all the possible combinations of two logic variables. Now we want to see what happens when we combine them ## Evaluate "`X` and `Y`" ```{r q1} # write here ``` ## Evaluate "`X` or `Y`" ```{r q2} # write here ``` ## Evaluate "`X` and not `Y`" ```{r q3} # write here ``` ## Evaluate "not `X` and not `Y`" ```{r q4} # write here ``` ## Show that "not `X` and not `Y`" is the _negation_ of "`X` or `Y`". Print both results in different lines, so we can see they are the same. This is called _De Morgan's rule_. ```{r q5} # write here ``` ## Show that "not `X` or not `Y`" is the negation of "`X` and `Y`". Print both results in different lines, so we can see they are the same. This is also called _De Morgan's rule_. ```{r q6} # write here ``` ## (Bonus) Can you prove that `X` and `Y` are really all combinations of two logic variables? > Write your comment here. Keep the `>` and delete the rest > > > # Combination of three logic variables Consider now `A`, `B`, and `C`, defined as follows ```{r} A <- rep(c(TRUE, FALSE), 4) A B <- rep(c(TRUE, TRUE, FALSE, FALSE), 2) B C <- rep(c(TRUE, FALSE), c(4, 4)) C ``` These are all the combinations of three logic values. ## Show that "`A` and the result of`B` or `C`" is equivalent to "the result of `A` and `B`, or the result of `A` and `C`". Print both results in different lines, so we can see they are the same. This is called _Distributive rule_. ```{r q7} # write here ``` ## Show that "`A` or the result of`B` and `C`" is equivalent to "the result of `A` or `B`, and the result of `A` or `C`". Print both results in different lines, so we can see they are the same. This is also called _Distributive rule_. ```{r q8} # write here ``` ## (Bonus) Can you show the _associative rule_? ```{r q9} # write here ``` ## (Bonus) Can you show the _commutative rule_? ```{r q10} # write here ``` # Modifying a vector In contrast to single-value variables, when we use indices to modify a vector, it changes on place. The answers to the following questions should work for any vector `v`. For the sake of example, consider the vector `v` defined as ```{r} v <- seq(from=7, to=1) v ``` ```{r q11} # write here ``` ## Change the first element to `8` and show the updated vector `v`. ```{r q12} # write here ``` ## Change the sign of the second element and show the updated vector `v`. ```{r q13} # write here ``` ## Add 7 to the third and fourth element and show the updated vector `v`. ```{r q14} # write here ``` ## Change again the sign of the second element and show the updated vector `v`. ```{r q15} # write here ``` ## Increase the last three elements by 10%. ```{r q16} # write here ```