Exercises
Write a function called
pattern()
that when given a character will print out the character in a pattern like this:* ** *** ** *
That is: a row of one, then a row of two, then a row of three, then a row of two, and finally a row of one.
The function should take one parameter called
char
. The default value of this parameter should be*
. Typical examples of use should be as follows:pattern()
## * ## ** ## *** ## ** ## *
pattern(char = "x")
## x ## xx ## xxx ## xx ## x
Write a function called
charSquare()
that when given two characters will use them to make a square like this:**** a a a a ****
That is: a row of four of one of the characters, then two rows that consist of the other character followed by two spaces followed by that other character, and finally a row of four of the first character.
The function should take two parameters called
end
andmiddle
. The default value ofend
should should be*
and the default value ofmiddle
should bex
. Typical examples of use should be as follows:charSquare()
## **** ## x x ## x x ## ****
charSquare(end = "z", middle = "%")
## zzzz ## % % ## % % ## zzzz
Write a function called
reverse()
that, given any vector, returns a vector with the elements in reverse order. It should take one parameter calledvec
. The default value ofvec
should be the vectorc("Bob", "Marley")
. Typical examples of use should be:reverse()
## [1] "Marley" "Bob"
reverse(c(3,2,7,6))
## [1] 6 7 2 3
Hint: Recall how you can use sub-setting to reverse:
<- c("a", "b", "c", "d", "e") firstFiveLetters 5:1] firstFiveLetters[
## [1] "e" "d" "c" "b" "a"
You just need to figure out how to reverse vectors of arbitrary length.
Note: It so happens that R already provides a function
rev()
that reverses the elements of a given vector, but your assignment is to write your own function that reverses vectors. In particular, you may not userev()
in the body of yourreverse()
function!A vector is said to be a palindrome if reversing its elements yields the same vector. Thus,
c(3,1,3)
is a palindrome, butc(3,1,4)
is not a palindrome.Write a function called
isPalindrome()
that, when given any vector, will returnTRUE
if the vector is a palindrome andFALSE
if it is not a palindrome. The function should take a single parameter calledvec
, with no default value. Typical examples of use should be:isPalindrome(vec = c("Bob", "Marley", "Bob"))
## [1] TRUE
isPalindrome(c(3,2,7,4,3))
## [1] FALSE
Hint: You already have the function
reverse()
from the previous Exercise. Use this function, along with the Boolean operator==
and theall()
function.The eighteenth-century mathematician Leonhard Euler discovered that:
\[\frac{\pi^2}{6} = \sum_{k=1}^{k=\infty} \frac{1}{k^2}.\] It follows that \[\pi = \sqrt{\left(\sum_{k=1}^{k=\infty} \frac{6}{k^2}\right)}.\] Use this fact to write a function called
eulerPI()
that will approximate \(\pi\). The function should take a single parametern
, which is the number of terms in the infinite series that are to be summed to make the approximation. The default value ofn
should be 10,000.Consider the infinite series:
\[\sum_{k=1}^{k=\infty} \frac{1}{k(k+1)}.\] Write a function called
partialSum()
that will compute the sum of the first \(n\) terms of this series. The function should take a single parametern
, which is the number of terms in the series that are to be summed to make the approximation. The default value ofn
should be 10,000. Use the function to compute the sum of the first 10,000 terms and the sum of the first 100,000 terms. What number do you thnk the series converges to?