Little programs for various everyday tasks
Purpose: Help our blocking (rooming) group decide what combination of doubles and triples would be best. Each person assigns to each other person a "utility" rating describing how favorable rooming with the other person would be.
Design: Uses the independent set algorithm as follows: Create a graph with each node represents a double or triple. For example, if persons A through F are trying to find the optimal rooming group, then one particular node would be A-B in a double, and another node would be A-C-F in a triple. Two nodes are connected if and only if they share a person (i.e. could not possibly happen at the same time). Each node is then assigned a utility rating by taking the average of the utilities of each person for the others within the node. Then, we perform a weighted independent sets algorithm to determine the optimal rooming arrangment.
Purpose: Given a "messages.html" file downloaded from Facebook's user data, this program will allow the user to explore the following features:
- Create bar charts that contain the following information for each person (see image)
- Character count in percent
- Average response time in minutes
- Number of conversations initiated
- List of people you've talked to the most (not pictured)
- List of conversations most active, including your participation rate in them (not pictured)
- Quiz where you choose a chat and are presented with some random quotes to identify (not pictured)
Design: Uses basic dictionaries, counters, and XML tree parsing to generate statistics and matplotlib to generate graphs.
Purpose: Send out grades to students from a CSV file. Displays all their homework scores, the ones that are dropped, and the their final scores.
Design: Uses Python to calculate which homeworks to drop, removing the appropriate number of points from the denominator.
Purpose: Given 4 numbers between 1 and 13, it checks whether there is a solution to the classic game 24, where you can use +,-,*,/ to form the number 24 with ALL of the 4 numbers.
Design: A recursive solution: currently has bugs
Purpose: Solves the following problem: Let G = GL_2(Z/3Z) representing the group of invertible 2 by 2 matrices over the field Z/3Z. How many elements of order 3 are in G?
Design: Uses numpy's matrix function to iteratively find the order of each 2x2 matrix with non-zero determinant.
Purpose: After downloading one's facebook data, this program gives you a list of all your facebook message conversation recipients (including groupchats) and provides hyperlinks to each chat.
Instructions: Click here to find out how to download your facebook data. Navigate to the HTML folder, and place this Javascript program (messages.js) into that folder. It should also contain an HTML document called "messages.htm". Open it up with a source code editor, and link messages.js with a script, src ="messages.js" tag. Then, open up messages.htm and in a few seconds, you should see that your sidebar now contains all your groupchats! You can click on them to skip directly to them.
Design: All conversations begin with div with a class of "thread". Therefore, I searched for all these divs, created an ID for them, and then changed the innerHTML of the navigation bar to be links to these ID's.