1. Research what does the function “sample” do

The sample function generates a random sample of the elements of a vector.
It can be used to randomly shuffle a vector or to draw random elements with or without replacement.

# Example:
sample(c("A", "T", "G", "C"), 10, replace = TRUE)
##  [1] "C" "C" "G" "A" "T" "A" "A" "G" "C" "G"

2. Use the function “sample” to create a sequence of DNA of length N

N <- 20
dna_seq <- sample(c("A", "T", "G", "C"), N, replace = TRUE)
print("Original DNA Sequence:")
## [1] "Original DNA Sequence:"
print(dna_seq)
##  [1] "G" "A" "A" "C" "G" "A" "A" "C" "T" "T" "G" "G" "G" "C" "C" "T" "C" "A" "A"
## [20] "A"

3. Get the complementary sequence of the DNA sequence Generated

comp_seq <- c()  # Empty vector to save the complementary sequence :)

for (base in dna_seq) {
  if (base == "A") {
    comp_seq <- c(comp_seq, "T")
  } else if (base == "T") {
    comp_seq <- c(comp_seq, "A")
  } else if (base == "G") {
    comp_seq <- c(comp_seq, "C")
  } else if (base == "C") {
    comp_seq <- c(comp_seq, "G")
  }
}

print("Complementary DNA sequence:")
## [1] "Complementary DNA sequence:"
print(comp_seq)
##  [1] "C" "T" "T" "G" "C" "T" "T" "G" "A" "A" "C" "C" "C" "G" "G" "A" "G" "T" "T"
## [20] "T"

4. Transform that DNA sequence into RNA sequence (Replacing T with U)

dna_to_rna <- function(base) {
  if (base == "T") return("U") else return(base)
}

rna_seq <- sapply(dna_seq, dna_to_rna)
print("RNA Sequence:")
## [1] "RNA Sequence:"
print(rna_seq)
##   G   A   A   C   G   A   A   C   T   T   G   G   G   C   C   T   C   A   A   A 
## "G" "A" "A" "C" "G" "A" "A" "C" "U" "U" "G" "G" "G" "C" "C" "U" "C" "A" "A" "A"

5. using the function “sample” Generate 20 DNA sequences of lengths between 10 and 20 and using loops, and using the length function, get the lengths of each one of them.

set.seed(123)
seq_list <- list()  # list to store DNA sequences
len_list <- numeric(20)  # numerical list to store their lengths

for (i in 1:20) {
  len <- sample(10:20, 1)
  sequence <- sample(c("A", "T", "G", "C"), len, replace = TRUE)
  seq_list[[i]] <- sequence
  len_list[i] <- length(sequence)
}


print("Lengths of 20 Random DNA Sequences:")
## [1] "Lengths of 20 Random DNA Sequences:"
print(len_list)
##  [1] 12 20 20 18 13 11 18 15 13 16 17 12 17 16 14 16 14 17 20 10
LS0tDQp0aXRsZTogIlFVSVoiDQphdXRob3I6ICJTaWx2ZXIgVGVhbSINCmRhdGU6ICIzLzQvMjAyNSINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogIHdvcmRfZG9jdW1lbnQ6IGRlZmF1bHQNCiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0DQotLS0NCg0KDQoNCiMgMS4gUmVzZWFyY2ggd2hhdCBkb2VzIHRoZSBmdW5jdGlvbiAic2FtcGxlIiBkbw0KDQpUaGUgYHNhbXBsZWAgZnVuY3Rpb24gZ2VuZXJhdGVzIGEgcmFuZG9tIHNhbXBsZSBvZiB0aGUgZWxlbWVudHMgb2YgYSB2ZWN0b3IuICANCkl0IGNhbiBiZSB1c2VkIHRvIHJhbmRvbWx5IHNodWZmbGUgYSB2ZWN0b3Igb3IgdG8gZHJhdyByYW5kb20gZWxlbWVudHMgd2l0aCBvciB3aXRob3V0IHJlcGxhY2VtZW50Lg0KDQpgYGB7cn0NCiMgRXhhbXBsZToNCnNhbXBsZShjKCJBIiwgIlQiLCAiRyIsICJDIiksIDEwLCByZXBsYWNlID0gVFJVRSkNCmBgYA0KDQoNCg0KIyAyLiBVc2UgdGhlIGZ1bmN0aW9uICJzYW1wbGUiIHRvIGNyZWF0ZSBhIHNlcXVlbmNlIG9mIEROQSBvZiBsZW5ndGggTg0KDQpgYGB7cn0NCk4gPC0gMjANCmRuYV9zZXEgPC0gc2FtcGxlKGMoIkEiLCAiVCIsICJHIiwgIkMiKSwgTiwgcmVwbGFjZSA9IFRSVUUpDQpwcmludCgiT3JpZ2luYWwgRE5BIFNlcXVlbmNlOiIpDQpwcmludChkbmFfc2VxKQ0KYGBgDQoNCg0KDQojIDMuIEdldCB0aGUgY29tcGxlbWVudGFyeSBzZXF1ZW5jZSBvZiB0aGUgRE5BIHNlcXVlbmNlIEdlbmVyYXRlZA0KDQpgYGB7cn0NCmNvbXBfc2VxIDwtIGMoKSAgIyBFbXB0eSB2ZWN0b3IgdG8gc2F2ZSB0aGUgY29tcGxlbWVudGFyeSBzZXF1ZW5jZSA6KQ0KDQpmb3IgKGJhc2UgaW4gZG5hX3NlcSkgew0KICBpZiAoYmFzZSA9PSAiQSIpIHsNCiAgICBjb21wX3NlcSA8LSBjKGNvbXBfc2VxLCAiVCIpDQogIH0gZWxzZSBpZiAoYmFzZSA9PSAiVCIpIHsNCiAgICBjb21wX3NlcSA8LSBjKGNvbXBfc2VxLCAiQSIpDQogIH0gZWxzZSBpZiAoYmFzZSA9PSAiRyIpIHsNCiAgICBjb21wX3NlcSA8LSBjKGNvbXBfc2VxLCAiQyIpDQogIH0gZWxzZSBpZiAoYmFzZSA9PSAiQyIpIHsNCiAgICBjb21wX3NlcSA8LSBjKGNvbXBfc2VxLCAiRyIpDQogIH0NCn0NCg0KcHJpbnQoIkNvbXBsZW1lbnRhcnkgRE5BIHNlcXVlbmNlOiIpDQpwcmludChjb21wX3NlcSkNCmBgYA0KDQoNCg0KIyA0LiBUcmFuc2Zvcm0gdGhhdCBETkEgc2VxdWVuY2UgaW50byBSTkEgc2VxdWVuY2UgKFJlcGxhY2luZyBUIHdpdGggVSkNCg0KYGBge3J9DQpkbmFfdG9fcm5hIDwtIGZ1bmN0aW9uKGJhc2UpIHsNCiAgaWYgKGJhc2UgPT0gIlQiKSByZXR1cm4oIlUiKSBlbHNlIHJldHVybihiYXNlKQ0KfQ0KDQpybmFfc2VxIDwtIHNhcHBseShkbmFfc2VxLCBkbmFfdG9fcm5hKQ0KcHJpbnQoIlJOQSBTZXF1ZW5jZToiKQ0KcHJpbnQocm5hX3NlcSkNCmBgYA0KDQoNCg0KIyA1LiB1c2luZyB0aGUgZnVuY3Rpb24gInNhbXBsZSIgR2VuZXJhdGUgMjAgRE5BIHNlcXVlbmNlcyBvZiBsZW5ndGhzIGJldHdlZW4gMTAgYW5kIDIwIGFuZCB1c2luZyBsb29wcywgYW5kIHVzaW5nIHRoZSBsZW5ndGggZnVuY3Rpb24sIGdldCB0aGUgbGVuZ3RocyBvZiBlYWNoIG9uZSBvZiB0aGVtLg0KDQpgYGB7cn0NCnNldC5zZWVkKDEyMykNCnNlcV9saXN0IDwtIGxpc3QoKSAgIyBsaXN0IHRvIHN0b3JlIEROQSBzZXF1ZW5jZXMNCmxlbl9saXN0IDwtIG51bWVyaWMoMjApICAjIG51bWVyaWNhbCBsaXN0IHRvIHN0b3JlIHRoZWlyIGxlbmd0aHMNCg0KZm9yIChpIGluIDE6MjApIHsNCiAgbGVuIDwtIHNhbXBsZSgxMDoyMCwgMSkNCiAgc2VxdWVuY2UgPC0gc2FtcGxlKGMoIkEiLCAiVCIsICJHIiwgIkMiKSwgbGVuLCByZXBsYWNlID0gVFJVRSkNCiAgc2VxX2xpc3RbW2ldXSA8LSBzZXF1ZW5jZQ0KICBsZW5fbGlzdFtpXSA8LSBsZW5ndGgoc2VxdWVuY2UpDQp9DQoNCg0KcHJpbnQoIkxlbmd0aHMgb2YgMjAgUmFuZG9tIEROQSBTZXF1ZW5jZXM6IikNCnByaW50KGxlbl9saXN0KQ0KYGBgDQo=