Mini-projects to study algorithms and data stuctures, as a part of UT Austin's CS 313E Elements of Software Design course.
Project name | Summary |
---|---|
BINARYSEARCH_tea | Given a daily budget and a list of prices of tea from various stores, compute the number of different stores that tea can be purchased from, such that one cup of tea is purchased per day. |
BINARYSEARCH_work | Compare linear and binary search times for a given scenario. |
BINARYTREE_balance_factor | Given a binary tree rooted at node n, determine determine the difference in heights between its two subtrees. |
BINARYTREE_expression_tree | Generate a binary expression tree to prevent ambiguity in expression execution order. Include pre-fix and post-fix orders without parentheses. |
BST_left_sum | Return the sum of the left-side-view nodes of a binary search tree. |
BST_methods | Implement the following BST methods: insert, min, max, delete, height, median, size, largest branch, smallest branch, balanced |
DP_maximum_profit | Given a list of house prices and a list of forecasted percent value increases, determine the maximum possible profit by purchasing a subset of the listed houses. |
DP_minimum_gifts | A company rewards customers with gifts for certain purchases. Given a list of gift prices and the amount a customer spends, determine the minimum number of gifts that the company can send the customer. |
GRAPH_bucket_fill | Implement Breadth-First Search and Depth-First Search to flood fill/bucket fill pixels in images. |
GRAPH_dijkstra_bellman_ford | Given a graph and a starting node … Dijkstra: Greedily finds shortest path to each node from a start node (if weights are positive). Bellman-Ford: Finds shortest path to each node from a start node (can accept negative weights and will alert if a negative loop exists). |
GRAPH_Euler_walk | Use depth-first search to determine if a Euler walk can be performed on an un-directed graph. |
GRAPH_get_adjacency_matrix | Generate an adjacency matrix given a weighted, directed graph defined by an edge list. |
GRAPH_topological_sort | Given an edge list of a graph, if the graph is acyclic, perform a topological sort. Return the vertices in alphabetical order. |
HEAP_get_median | Implement a function that can use a heap to calculate the median of a given list. |
LINKEDLIST_encryption | Encrypt a password by rotating a singly linked list. |
LINKEDLIST_methods | Implement the following singly linked list methods: length, insert first, insert last, insert in order, search unordered, search ordered. |
OOP_automatic_bev_machine | Implement controller software for a fully automatic beverage vending machine |
OOP_inheritance_employees | Use OOP to manage salary calculations of company employees, with a focus on using inheritance and key-word arguments. |
OOP_intervals | Create an IntegerInterval class and define the following methods: length of interval, overlap, intersection, union. |
PROBSOLV_anagram_families | Given a list of words, return the number of anagram families. |
PROBSOLV_encryption | Encrypt a message by padding with asterisks, filling in a table with the padded message, rotating the table, and finally reading the message in row-major order, omitting any asterisks. |
PROBSOLV_flower_arrangement | Given a number of vases and a list of flowers, arrange the flowers into the vases such that no more than two flowers of the same type are inserted in the same vase. Return the type(s) of flowers that are left over. |
PROBSOLV_is_symmetric_matrix | Given a square 2-D list of 1s and 0s, return True if the matrix is symmetric. |
PROBSOLV_spiral | Given a matrix of arbitrary size, create a spiral of natural numbers such that 1 occupies the center of the spiral. Return the sum of the numbers adjacent to an input number. |
RECURSION_spelling_test | Given an input string and a list of strings, determine whether the input string can be spelled by some combination of strings in the list, using each string in the list no more than once. Use recursion. |