COS 126 Programming Assignment: Conditionals and Loops COS 126 Conditionals and Loops Programming Assignment The goal of this assignment is to write five short Java programs to gain practice with data types, expressions, loops and conditionals. Boolean and integer variables. Write a program Ordered.java that reads in three integer command-line arguments, x, y, and z. Define a boolean variable isOrdered whose value is true if the three values are either in strictly ascending order (x < y < z) or in strictly descending order (x > y > z), and false otherwise. Print out the variable isOrdered using System.out.println(isOrdered).
% java Ordered 10 17 49
true
% java Ordered 49 17 10
true
% java Ordered 10 49 17
false
Type conversion and conditionals. Several different formats are used to represent color. For example, the primary format for LCD displays, digital cameras, and web pages, known as the RGB format, specifies the level of red (R), green (G), and blue (B) on an integer scale from 0 to 255. The primary format for publishing books and magazines, known as the CMYK format, specifies the level of cyan (C), magenta (M), yellow (Y), and black (K) on a real scale from 0.0 to 1.0. Write a program RGBtoCMYK.java that converts RGB to CMYK. Read three integers red, green, and blue from the command line, and print the equivalent CMYK values using these formulas: Hint. Math.max(x, y) returns the maximum of x and y.
% java RGBtoCMYK 75 0 130 // indigo
cyan = 0.423076923076923
magenta = 1.0
yellow = 0.0
black = 0.4901960784313726
If all three red, green, and blue values are 0, the resulting color is black, so you should output 0.0, 0.0, 0.0 and 1.0 for the cyan, magenta, yellow and black values, respectively. Checkerboard. Write a program Checkerboard.java that takes an integer command-line argument N, and uses two nested for loops to print an N-by-N "checkerboard" pattern like the one below: a total of N2 asterisks, where each row has 2N characters (alternating between asterisks and spaces).
% java Checkerboard 4 % java Checkerboard 5
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * *
A drunkard's walk. A drunkard begins walking aimlessly, starting at a lamp post. At each time step, the drunkard forgets where he or she is, and takes one step at random, either north, east, south, or west, with probability 25%. How far will the drunkard be from the lamp post after N steps? Write a program RandomWalker.java that takes an integer command-line argument N and simulates the motion of a random walker for N steps. After each step, print the location of the random walker, treating the lamp post as the origin (0, 0). Also, print the square of the final distance from the origin.
% java RandomWalker 10 % java RandomWalker 20
(0, -1) (0, 1)
(0, 0) (-1, 1)
(0, 1) (-1, 2)
(0, 2) (0, 2)
(-1, 2) (1, 2)
(-2, 2) (1, 3)
(-2, 1) (0, 3)
(-1, 1) (-1, 3)
(-2, 1) (-2, 3)
(-3, 1) (-3, 3)
squared distance = 10 (-3, 2)
(-4, 2)
(-4, 1)
(-3, 1)
(-3, 0)
(-4, 0)
(-4, -1)
(-3, -1)
(-3, -2)
(-3, -3)
squared distance = 18
Write a program RandomWalkers.java that takes two integer command-line arguments N and T. In each of T independent experiments, simulate a random walk of N steps and compute the squared distance. Output the mean squared distance (the average of the T squared distances).
% java RandomWalkers 100 10000 % java RandomWalkers 400 2000
mean squared distance = 101.446 mean squared distance = 383.12
% java RandomWalkers 100 10000 % java RandomWalkers 800 5000
mean squared distance = 99.1674 mean squared distance = 811.8264
% java RandomWalkers 200 1000 % java RandomWalkers 1600 100000
mean squared distance = 195.75 mean squared distance = 1600.13064
As N increases, we expect the random walker to end up farther and farther away from the origin. But how much farther? Use RandomWalkers to formulate a hypothesis as to how the mean squared distance grows as a function of N. Use T = 100,000 trials to get a sufficiently accurate estimate. Remark: this process is a discrete version of a natural phenomenon known as Brownian motion. It serves as a scientific model for an astonishing range of physical processes from the dispersion of ink flowing in water, to the formation of polymer chains in chemistry, to cascades of neurons firing in the brain. Program style and format. Now that your program is working, go back and look at the program itself. Is your header complete? Did you comment appropriately? Did you use descriptive variable names? Are there any redundant conditions? Follow the guidelines in the Reviewing your Programs section of the Checklist. Submission. Submit the files Ordered.java, RGBtoCMYK.java, Checkerboard.java, RandomWalker.java and RandomWalkers.java. Finally, submit a readme.txt file and answer the questions.