Reference no: EM13671328
Question One: Mirror Box Drawings
For this problem, you're going to write a program that makes mirror box drawings. Before we get into the specifics of what we'd like you to do, I thought I'd share some screenshots of the completed pro - gram!
The program that you will write lets the user draw pictures on the canvas. Whenever the user clicks or drags the mouse, the program draws filled black circles at the mouse location, giving the appearance of drawing with a thick black marker. What makes this program interesting is that whenever the user draws a figure on one half of the window, the program will automatically draw the mirror of that pic - ture on the other half. This lets you draw aesthetically pleasing pictures by just giving one half of the picture and letting the program figure out the other half for you.
More specifically, the program should work as follows:
- When the program starts up, it should draw a vertical line from the top of the screen to the bot- tom that cleanly divides the window in half. This makes it easier for the user to see the mirror effect.
- When the user presses the mouse anywhere in the window or drags the mouse over the window, you should draw two black circles of radius RADIUS centered at two points in the window: the location where the user clicked or dragged, and that same point mirrored across the center line.
The user should be able to click and drag the mouse anywhere in the window, meaning that they can draw in the left half of the window and have it mirrored to the right or in the right half of the window and have it mirrored to the left.
import acm.program.*; import acm.graphics.*; import java.awt.event.*;
public class MirrorBox extends GraphicsProgram {
/* The radius of each circle that should be drawn. */
private static final double RADIUS = 5.0;
Question 2: RNA Hairpins
RNA strands consist of strings of nucleotides, molecules which encode genetic information. Computa- tional biologists typically represent each RNA strand as a string made from four different letters - A, C, G, and U - each of which represents one of the four possible nucleotides.
Each of the the four nucleotides has an affinity for a specific other nucleotide. Specifically:
A has an affinity for U (and vice-versa) C has an affinity for G (and vice-versa)
This sometimes causes RNA strands to fold over and bind with themselves. Consider this RNA strand:
If you perfectly fold this RNA strand in half, you get the following:
Notice that each pair of nucleotides - except for the A and the G on the far right - are attracted to the corresponding nucleotide on the other side of the RNA strand:
Because of the natural affinities of the nucleotides in the RNA strand, the RNA strand will be held in this shape. This is an example of an RNA hairpin, a structure that plays an important biological role.
For the purposes of this problem, we'll say that an RNA strand forms a hairpin if
- it has even length (so that it can be cleanly folded in half);
- it has length at least four (so that there's something to hold the ends together); and
- all of its nucleotides, except for the middle two, have an affinity for its corresponding nucleo - tide when folded over. (The middle two nucleotides in a hairpin might coincidentally have an affinity for one another, but it's not required. For example, CAUG forms a hairpin.)
Your job is to write a method
private boolean isRNAHairpin(String rna)
that accepts as input an RNA string and reports whether the described RNA strand would form an RNA hairpin. You can assume that the input string consists purely of the characters A, C, G, and U (all in up - per case, for simplicity), but you should make no other assumptions about the string. Here are some sample inputs and sample outputs:
isRNAHairpin("AU") should return false isRNAHairpin("GACC") should return true isRNAHairpin("GAUC") should return true
isRNAHairpin("UUUAAA") should return true
isRNAHairpin("UUUCAAA") should return false
Feel free to tear out this page as a reference, and write your answer on the next page.
private boolean isRNAHairpin(String rna)