# Max Cylinder, Duplicate Elimination, Binary Search Tree Assignment Solution

June 29, 2024
Dr. Atticus
🇺🇸 United States
Computer Science
Dr. Atticus brings over 6 years of experience in software engineering assignments, complemented by a Ph.D. from the University of Pennsylvania, USA. His career is distinguished by a strong research background in algorithm design and optimization. Dr. Atticus is adept at tackling complex software challenges and has a proven track record of delivering over 400 successful assignments.
Key Topics
• Instructions
• First Exercise
• Second Exercise
• Third exercise
Tip of the day
News

## Instructions

Objective

### First Exercise

Write a F# assignment function maxCylinderVolume that takes a list of floating-point tuples that represent dimensions of a cylinder and returns the volume of the cylinder that has the largest volume.
Each tuple has two floating point values that are both greater than zero. The first value is the radius r and the second value is the height h. The volume of the cylinder is computed using tr?h. The value r is represented in F# with System. Math. PI. If the list is empty, return 0.0.

### Second Exercise

Write a function elimDuplicates that takes a list of integers and eliminates consecutive duplicates; replacing them with a single instance of the value. Order is preserved and non-consecutive duplicates are unaffected.

### Third exercise

Write the following binary search tree functions for a binary search tree of integers. Use the following type definition for a BST (copy this into your solution):
1. Isert value tree: Inserts the value into the tree and returns the resulting tree. The resulting tree does NOT need to be balanced. If the value already exists in the tree, return the tree without inserting the value.
2. Sarch value tree: Returns true if the value is in the tree and false otherwise.
3. Count func tree: The parameter func is a Boolean function that takes a single parameter and returns true or false. The function tests the value of each node with func and returns the number of nodes that evaluate to true.
4. EvenCount tree: Returns the number of nodes that contain even integers. REQUIREMENT:
5. This function must be a single call to count (part 3C) using a lambda function.

Screenshots of output
Source Code
`let rec maxCylinderVolume list =    match list with    | [] -> 0.0      // if empty, return 0.0    | (r,h)::xs ->      // if not empty, it has (radius, height)        let volume = System.Math.PI*r*r*h     // calculate volume        let maxVol = maxCylinderVolume xs     // calculate max of tail        if volume > maxVol then volume     // if our volume is max, return it        else maxVol      // otherwise return tail maxlet rec elimDuplicates list =      match list with    | [] -> []     // if empty, return empty    | [a] -> [a]      // if one element, return same list    | a::b::xs ->     // if two or more elements        if a = b then elimDuplicates (b::xs)      // if elements are equal, remove 1, search rest        else a::(elimDuplicates (b::xs))     // if not repeated, add first, search in resttype BST =      | Empty    | TreeNode of int * BST * BSTlet rec insert value tree =     match tree with    | Empty -> TreeNode (value, Empty, Empty)      // if empty tree, add treenode with value    | TreeNode (n, lt, rt) ->      // if not empty tree        if value < n then TreeNode (n, (insert value lt), rt)      // if value is smaller than val in this node, go left branch        else            if value > n then TreeNode (n, lt, (insert value rt))     // if value is greater than val in this node, go right branch            else TreeNode (n, lt, rt)      // if value is equal to this node's value, don't change treelet rec search value tree =     match tree with    | Empty -> false     // empty node means not found    | TreeNode (n, lt, rt) ->      // if not empty        if value < n then search value lt     // if value is smaller than val in this node, search left branch        else            if value > n then search value rt      // if value is greater than val in this node, search right branch            else true // else, value is equal to this node's value, we found itlet rec count func tree =    match tree with    | Empty -> 0      // empty node doesn't have a value, no count    | TreeNode (n, lt, rt) ->      // if not empty, add matches in left plus matches in right, plus our match if func of our value is true        (count func lt) + (count func rt) + (if func n then 1 else 0)let evenCount tree = count (fun x -> x % 2 = 0) tree      // count using lambda that returns true if remainder by 2 is zero (number is even)`

## Related Samples

Discover our Computer Science Assignments sample section, where we offer expertly solved problems covering diverse topics. From algorithms to software engineering principles, each sample provides annotated solutions for learning and reference. Perfect for students aiming to excel in their computer science studies. Enhance your skills with our curated samples today!