Restriction Enzymes are used in recombinant dna experiments to chop up DNA strands at specific locations. These cut DNA at specific nucleotide sequences known as restriction sites. They are found in bacteria and have evolved to provide a defense mechanism against invading viruses.
The sites are found by looking for a specific palindromic locations on the double stranded helix. In this project we will read in a specific DNA strand and cut it into multiple pieces (substrings) determined by the HaeIII restriction enzyme. It traverses the DNA and searches for the sequence GGCC. Note that GGCC is on one strand and CCGG is on the other strand. These are palindromes. Even though HaeIII actually cuts the double stranded helix in this project we will just simulate the process by cutting the single strand at between the GG and CC forming blunt ends. You project is to read in the strand and send it to a function called HaeIII() (that you write). HaeIII(dna) is to return a list of substrings that result from cutting the input strand dna into pieces. Assume that it cut at every GGCC that occurs in the input dna strand. Return the list in the order that the sections occur in the dna strand that is processed. You are to print out the substrands together with their associated complementary strands where each pair is followed by a blank line.