Assignment 2
In this assignment, you will write a program that plot ASCII text approximations of the Mandelbrot set.
Problem 1
Consider the function𝑃(𝑥,𝑦)defined as follows
𝑃(𝑥,𝑦)(𝑢, 𝑣) = (𝑢2− 𝑣2+ 𝑥, 2𝑢𝑣 + 𝑦)
We define the orbit𝑂(𝑥, 𝑦)of a point(𝑥, 𝑦)to be an infinite list of items
𝑂(𝑥, 𝑦) = {(0, 0), 𝑃(𝑥,𝑦)(0, 0), 𝑃(𝑥,𝑦)(𝑃(𝑥,𝑦)(0, 0)), 𝑃(𝑥,𝑦)(𝑃(𝑥,𝑦)(𝑃(𝑥,𝑦)(0, 0))), ...}
In other words, the nth entry of the list𝑂(𝑥, 𝑦)is the𝑃(𝑥,𝑦)function composedwith itself n times and then applied to(0, 0)
Define a F# functionorbitthat takes a single point(𝑥, 𝑦)and index𝑖asan arguments and returns an𝑖𝑡ℎelement of the infinite list corresponding to𝑂(𝑥, 𝑦).
You may want to define a helper function corresponding to𝑃(𝑥,𝑦).
Define a recursive function disp that takes two arguments: - a number d, and - a list of tuples pairs.
Every tuple in this input list consists of a number followed by a character, and you can assume the input list is always in ascending order. For example, a possible input list might be:
[(0.15, '#'), (0.5, 'x'), (1.0, '.')]
The function disp should return the character from the list that corresponds to the smallest number on the list that is greater than the input d, and if d is larger than all the number in the list, disp should return a space character, ’ ’. For example,
disp 0.01 [(0.15, '#'), (0.5, 'x'), (1.0, '.')] = '#'
disp 0.4 [(0.15, '#'), (0.5, 'x'), (1.0, '.')] = 'x'
disp 100 [(0.15, '#'), (0.5, 'x'), (1.0, '.')] = ' '
One way to approximate the Mandelbrot set is to consider a certain element within the orbit of every point on the plane (such as the 12th element) and to check whether that element is within a a certain distance from the origin; if it is within this distance, then a non-blank character should be printed, else it should be left blank. You should use the following function to calculate distances of points from the origin:
let norm (x,y) = x*x + y*y
These distance values can then be used with disp and orbit to turn points on the plane into appropriate ASCII characters within an ASCII plot of the Mandelbrot set.
Define a function mandelbrot that takes three arguments: - the resolution of the approximation, r (used with the plane function), - the index of the elements, i, to check in the orbit lists of the points, and - the formatting list, l (to be used with the disp function).
This function should return a list of characters that corresponds to a picture approximating the shape of the Mandelbrot set on the plane.
You will need to combine the split, plane, disp, and orbit functions appro- priately; list comprehensions are allowed.
Once you’ve defined the function mandelbrot, you can generate an ASCII ver- sion of an approximation of the Mandelbrot set by evaluating the expression:
mandelbrot1712disp_symbols |> printfn"%s";;
DescriptionIn this final assignment, the students will demonstrate their ability to apply two ma
Path finding involves finding a path from A to B. Typically we want the path to have certain properties,such as being the shortest or to avoid going t
Develop a program to emulate a purchase transaction at a retail store. Thisprogram will have two classes, a LineItem class and a Transaction class. Th
1 Project 1 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of
1 Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 1 | 2 | 3 | 4 | 5 |