From fcf17413fc7575cf8adaebcf9319c87e36197913 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 15:43:06 +0530 Subject: [PATCH 001/107] Making problems more practical. Will change some problems around, and remove some and add some, to make this repo more practical and achievable. --- README.md | 277 +++++++++++++++++++++++++++--------------------------- 1 file changed, 140 insertions(+), 137 deletions(-) diff --git a/README.md b/README.md index e5df16d66..e259c5154 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,9 @@ -Karan's Mega Project List +Mega Project List ======== -Trying to complete all projects from [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/). +#### [RECOGNITION](https://github.com/thekarangoel/Projects/tree/master/RECOGNITION) -### [RECOGNITION](https://github.com/thekarangoel/Projects/tree/master/RECOGNITION) - -.This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. +This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. ![July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png) @@ -26,293 +24,298 @@ I will link to each project that I complete. Some will be in this same repo, som To get started, fork this repo, delete this README and rename [*README-scratch.md*](https://github.com/thekarangoel/Projects/blob/master/README-scratch.md) to *README.md*. -**Note**: I have't read any problem while creating this repo. I'll read them as I start solving the problems. Hence, there is no prior filtering of problems. Keeps things spicy. :) - =============================== Numbers --------- -[**Find PI to the Nth Digit**](https://github.com/thekarangoel/Projects/blob/master/Numbers/pi.py) – Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. +[**Find PI to the Nth Digit**](https://github.com/thekarangoel/Projects/blob/master/Numbers/pi.py) - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. -[**Fibonacci Sequence**](https://github.com/thekarangoel/Projects/blob/master/Numbers/fibonacci.py) – Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. +[**Fibonacci Sequence**](https://github.com/thekarangoel/Projects/blob/master/Numbers/fibonacci.py) - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. -[**Prime Factorization**](https://github.com/thekarangoel/Projects/blob/master/Numbers/prime.py) – Have the user enter a number and find all Prime Factors (if there are any) and display them. +[**Prime Factorization**](https://github.com/thekarangoel/Projects/blob/master/Numbers/prime.py) - Have the user enter a number and find all Prime Factors (if there are any) and display them. -[**Next Prime Number**](https://github.com/thekarangoel/Projects/blob/master/Numbers/next_prime.py) – Have the program find prime numbers until the user chooses to stop asking for the next one. +[**Next Prime Number**](https://github.com/thekarangoel/Projects/blob/master/Numbers/next_prime.py) - Have the program find prime numbers until the user chooses to stop asking for the next one. -[**Find Cost of Tile to Cover W x H Floor**](https://github.com/thekarangoel/Projects/blob/master/Numbers/tile.py) – Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. +[**Find Cost of Tile to Cover W x H Floor**](https://github.com/thekarangoel/Projects/blob/master/Numbers/tile.py) - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. -**Mortgage Calculator** – Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. +**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. -[**Change Return Program**](https://github.com/thekarangoel/Projects/blob/master/Numbers/change.py) – The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. +[**Change Return Program**](https://github.com/thekarangoel/Projects/blob/master/Numbers/change.py) - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. -[**Binary to Decimal and Back Converter**](https://github.com/thekarangoel/Projects/blob/master/Numbers/binary_decimal.py) – Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. +[**Binary to Decimal and Back Converter**](https://github.com/thekarangoel/Projects/blob/master/Numbers/binary_decimal.py) - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. -[**Calculator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/calc.py) – A simple calculator to do basic operators. Make it a scientific calculator for added complexity. +[**Calculator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/calc.py) - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. -**Unit Converter (temp, currency, volume, mass and more)** – Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. +**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. -[**Alarm Clock**](https://github.com/thekarangoel/Projects/blob/master/Numbers/alarm.py) – A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. +[**Alarm Clock**](https://github.com/thekarangoel/Projects/blob/master/Numbers/alarm.py) - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. -[**Distance Between Two Cities**](https://github.com/thekarangoel/Projects/blob/master/Numbers/distance.py) – Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. +[**Distance Between Two Cities**](https://github.com/thekarangoel/Projects/blob/master/Numbers/distance.py) - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. -[**Credit Card Validator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/credit_card_validator.py) – Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). +[**Credit Card Validator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/credit_card_validator.py) - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). -**Tax Calculator** – Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. +**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. -**Dijkstra’s Algorithm** – Create a program that finds the shortest path through a graph using its edges. +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. Text --------- -[**Reverse a String**](https://github.com/thekarangoel/Projects/blob/master/Text/reverse.py) – Enter a string and the program will reverse it and print it out. +[**Reverse a String**](https://github.com/thekarangoel/Projects/blob/master/Text/reverse.py) - Enter a string and the program will reverse it and print it out. -[**Pig Latin**](https://github.com/thekarangoel/Projects/blob/master/Text/piglatin.py) – Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. +[**Pig Latin**](https://github.com/thekarangoel/Projects/blob/master/Text/piglatin.py) - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. -[**Count Vowels**](https://github.com/thekarangoel/Projects/blob/master/Text/count_vowels.py) – Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. +[**Count Vowels**](https://github.com/thekarangoel/Projects/blob/master/Text/count_vowels.py) - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. -[**Check if Palindrome**](https://github.com/thekarangoel/Projects/blob/master/Text/palindrome.py) – Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” +[**Check if Palindrome**](https://github.com/thekarangoel/Projects/blob/master/Text/palindrome.py) - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” -**Count Words in a String** – Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. +**Count Words in a String** - Counts the number of individual words in a string and display the top 5/10 most used words. -**Text Editor** – Notepad style application that can open, edit, and save text documents. Add syntax highlighting and other features. +**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* -**RSS Feed Creator** – A program which can read in text from other sources and put it in RSS or Atom news format for syndication. +**RSS Feed Creator** - A program which can read in text from other sources and put it in RSS or Atom news format for syndication. -**Post it Notes Program** – A program where you can add text reminders and post them. You can have the program also add popup reminders. +**Post it Notes Program** - A program where you can add text reminders and post them. You can have the program also add popup reminders. -**Quote Tracker (market symbols etc)** – A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. -**Guestbook / Journal** – A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. -**News Ticker and Game Scores** – A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. +**News Ticker and Game Scores** - A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. -**Fortune Teller (Horoscope)** – A program that checks your horoscope on various astrology sites and puts them together for you each day. +**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. -**Vigenere / Vernam / Ceasar Ciphers** – Functions for encrypting and decrypting data messages. Then send them to a friend. +**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. -**Random Gift Suggestions** – Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. -**Text to HTML Generator** – Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. +**Text to HTML Generator** - Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. -**CD Key Generator** – Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. +**CD Key Generator** - Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. -**Regex Query Tool** – A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. +**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. Networking --------- -**FTP Program** – A file transfer program which can transfer files back and forth from a remote web sever. +**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. -**Get Atomic Time from Internet Clock** – This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. -**Chat Application (IRC or MSN Style)** – Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. +**Chat Application (IRC or MSN Style)** - Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. -**Fetch Current Weather** – Get the current weather for a given zip/postal code. +**Fetch Current Weather** - Get the current weather for a given zip/postal code. -**P2P File Sharing App** – Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. +**P2P File Sharing App** - Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. -**Port Scanner** – Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. +**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. -**Mail Checker (POP3 / IMAP)** – The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. -**Packet Sniffer** – A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. +**Packet Sniffer** - A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. -**Country from IP Lookup** – Enter an IP address and find the country that IP is registered in. +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. -**Whois Search Tool** – Enter an IP or host address and have it look it up through whois and return the results to you. +**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. -**Zip / Postal Code Lookup** – Enter a zip or postal code and have it return which city/cities that are in that zip code. +**Zip / Postal Code Lookup** - Enter a zip or postal code and have it return which city/cities that are in that zip code. -**Remote Login** – Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. +**Remote Login** - Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. -**Site Checker with Time Scheduling** – An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. +**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. -**Small Web Server** – A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. +**Small Web Server** - A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. -**Web Bot** – An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. +**Web Bot** - An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. Classes --------- -**Product Inventory Project** – Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. -**Movie Store** – Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. +**Movie Store** - Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. -**Airline / Hotel Reservation System** – Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. +**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. -**Student Grade Book Application** – Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. +**Student Grade Book Application** - Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. -**Bank Account Manager** \- Create a class called “Account” which will be an abstract class for three other classes called “CheckingAccount”, “SavingsAccount” and “BusinessAccount”. Manage credits and debits from these accounts through an ATM style program. +**Bank Account Manager** - Create a class called “Account” which will be an abstract class for three other classes called “CheckingAccount”, “SavingsAccount” and “BusinessAccount”. Manage credits and debits from these accounts through an ATM style program. -**Library Catalog** – Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. +**Library Catalog** - Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. -**Patient / Doctor Scheduler** – Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. +**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. -**Recipe Creator and Manager** – Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. +**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. -**Image Gallery** – Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. +**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. -**Class to Handle Large Numbers** – We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. +**Class to Handle Large Numbers** - We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. -**Chart Making Class / API** – Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. +**Chart Making Class / API** - Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. -**Shape Area and Perimeter Classes** – Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. +**Shape Area and Perimeter Classes** - Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. -**Matrix Class** – A class to manage matrices. Add, subtract and multiple matrices. +**Matrix Class** - A class to manage matrices. Add, subtract and multiple matrices. -**Flower Shop Ordering To Go** – Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. +**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. -**Vending Machine** – Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. +**Vending Machine** - Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. -**Josephus Problem** – Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” +**Josephus Problem** - Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” -**Family Tree Creator** – Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. +**Family Tree Creator** - Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. Threading --------- -**Create A Progress Bar for Downloads** – Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. +**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. -**Download Manager** – Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. +**Download Manager** - Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. -**Chat Application (remoting style)** – Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. +**Chat Application (remoting style)** - Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. -**Bulk Thumbnail Creator** – Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. +**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. Web --------- -**WYSIWG (What you see is what you get) Editor** – Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. +**WYSIWG (What you see is what you get) Editor** - Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. -**Web Browser with Tabs** – Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. +**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. -**Page Scraper** – Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. -**File Downloader** – An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. +**File Downloader** - An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. -**Telnet Application** – Create an application which can telnet into servers across the internet and run basic commands. +**Telnet Application** - Create an application which can telnet into servers across the internet and run basic commands. -**Online White Board** – Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. +**Online White Board** - Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. -**Bandwidth Monitor** – A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. -**Bookmark Collector and Sorter** – An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. +**Bookmark Collector and Sorter** - An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. -**Password Safe** – A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. +**Password Safe** - A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. -**Media Player Widget for iGoogle** – Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. +**Media Player Widget for iGoogle** - Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. -**Text Based Game Like Utopia** – Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. +**Text Based Game Like Utopia** - Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. -**Scheduled Auto Login and Action** – Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. +**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. -**E-Card Generator** – Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. -**Content Management System** – Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. -**Template Maker** – Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. +**Template Maker** - Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. -**CAPTCHA Maker** – Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. +**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. Files --------- -**Quiz Maker** – Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. +**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. -**Quick Launcher** – A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. +**Quick Launcher** - A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. -**File Explorer** – Create your own windows explorer program but with added features, better searching, new icons and other views. +**File Explorer** - Create your own windows explorer program but with added features, better searching, new icons and other views. -**Sort File Records Utility** – Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. +**Sort File Records Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. -**Add Transactions In File and Find Averages** – Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. +**Add Transactions In File and Find Averages** - Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. -**Create Zip File Maker** – The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. +**Create Zip File Maker** - The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. -**PDF Generator** – An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. -**Bulk Renamer and Organizer** – This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. +**Bulk Renamer and Organizer** - This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. -**Mp3 Tagger** – Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. +**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. -**Log File Maker** – Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. +**Log File Maker** - Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. -**Excel Spreadsheet Exporter** – Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. +**Excel Spreadsheet Exporter** - Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. -**RPG Character Stat Creator** – Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. +**RPG Character Stat Creator** - Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. -**Image Map Generator** – Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. +**Image Map Generator** - Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. -**File Copy Utility** – Create a utility that can do bulk file copying and backups of other files. +**File Copy Utility** - Create a utility that can do bulk file copying and backups of other files. -**Code Snippet Manager** – Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. +**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. -**Versioning Manager** – Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. +**Versioning Manager** - Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. Databases --------- -**SQL Query Analyzer** – A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. +**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. -**Remote SQL Tool** – A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. +**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. -**Baseball / Other Card Collector** – Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. +**Baseball / Other Card Collector** - Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. -**Report Generator** – Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. +**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. -**Database Backup Script Maker** – A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. +**Database Backup Script Maker** - A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. -**Event Scheduler and Calendar** – Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. -**Budget Tracker** – Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. -**Address Book** – Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. -**TV Show Tracker** – Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. +**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. -**Travel Planner System** – Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. +**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. -**Entity Relationship Diagram (ERD) Creator** – A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. +**Entity Relationship Diagram (ERD) Creator** - A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. -**Database Translation (MySQL SQL Server)** – A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. +**Database Translation (MySQL SQL Server)** - A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. -**Web Board (Forum)** – Create a forum for you and your buddies to post, administer and share thoughts and ideas. +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. Graphics and Multimedia --------- -**Slide Show** – Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. +**Slide Show** - Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. + +**Mind Mapper** - Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. + +**Import Picture and Save as Grayscale** - A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. + +**Stream Video from Online** - Try to create your own online streaming video player. -**Mind Mapper** – Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. +**Mp3 Player (and Other Formats)** - A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. -**Import Picture and Save as Grayscale** – A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. +**Bulk Picture Manipulator** - This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. -**Stream Video from Online** – Try to create your own online streaming video player. +**CD Burning App** - Create a utility that simply burns data to a CD. -**Mp3 Player (and Other Formats)** – A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. +**YouTube Downloader** - A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. -**Bulk Picture Manipulator** – This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. +**Wallpaper Manager** - Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) -**CD Burning App** – Create a utility that simply burns data to a CD. +**Screen Capture Program** - Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. -**YouTube Downloader** – A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. +**Image Browser** - This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. -**Wallpaper Manager** – Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) +**Traffic Light Application** - See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! -**Screen Capture Program** – Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. +**MP3 to Wav Converter** - MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. -**Image Browser** – This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. +**Signature Maker** - Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. -**Traffic Light Application** – See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! +**Screen Saver** - Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. -**MP3 to Wav Converter** – MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. -**Signature Maker** – Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. +**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. -**Screen Saver** – Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. +=============================================== -**Watermarking Application** – Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. +Source +======= -**Turtle Graphics** – This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. +[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) From a49a5bd14aa4993b531fe971b19a1eafcb881086 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 15:45:23 +0530 Subject: [PATCH 002/107] Update README-scratch.md --- README-scratch.md | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/README-scratch.md b/README-scratch.md index 05f45f508..b9b34f041 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -1,22 +1,13 @@ -Martyr2’s Mega Project List +Mega Project List ======== -Trying to complete all projects from [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/). - -**Note**: If you fork this repo to solve these projects in any language of your choice, please remove all my code, and start from scratch; you'll benefit a lot. Do ***not*** send pull requests. - -Some details: - -* I will use Python to solve these. Why? Because I want to learn the language quickly. -* I have no interest in making games, so I'm excluding those from the list below. -* I'm not interested in networking, so I *might* skip all (or some) of them. -* The projects will not be made in the order posted. -* I may not be able to complete all of them. -* My method of solving them may not be the best. +**Note**: If you fork this repo to solve these projects in any language of your choice, I suggest you remove all my code, and start from scratch; you'll benefit a lot. In any case, **do not send pull requests for replacing my code**. This is my space to store my code. That said, if you have suggestions for adding or removing problems, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new). I will link to each project that I complete. Some will be in this same repo, some bigger ones will have dedicated repos. -============================== +To get started, fork this repo, delete this README and rename [*README-scratch.md*](https://github.com/thekarangoel/Projects/blob/master/README-scratch.md) to *README.md*. + +=============================== Numbers --------- @@ -304,3 +295,10 @@ Graphics and Multimedia **Watermarking Application** – Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. **Turtle Graphics** – This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. + +========================= + +Sources +======= + +[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) From bce1727431c5b0930b1a2ed4ffed54820112deff Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 15:45:50 +0530 Subject: [PATCH 003/107] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e259c5154..33aa3e9e1 100644 --- a/README.md +++ b/README.md @@ -315,7 +315,7 @@ Graphics and Multimedia =============================================== -Source +Sources ======= [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) From 65904541902685c6631b849e7edd867b2cd1a426 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 20:07:16 +0530 Subject: [PATCH 004/107] Create CONTRIBUTING.md On popular demand! --- CONTRIBUTING.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..3f4b762a0 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,28 @@ +How to Contribute +================== + +## Solutions + +Please **do not send pull requests for replacing my code**. If you'd like to contribute solutions, please see the following instructions: + +* Solve the problem, and keep it in your repo. DO NOT send merge request yet. +* Find the problem in this [README](https://github.com/thekarangoel/Projects/blob/master/README.md) file. +* Edit the file in this format (notice the double square brackets): + + **This is a problem** - And here goes it's description. \[[octocat]]\(link-to-octocats-solution) \[[you]]\(link-to-your-solution) + +This results in something like this: + +**This is a problem** - And here goes it's description. [[octocat]](link-to-octocats-solution) [[you]](link-to-your-solution) + +* Please respect other people and do not delete or move anyone else's link. Place your solution at the end of the list of solutions. +* Save/Commit the README.md file. +* Send a pull request for this commit ONLY! + +===================================== + +## Problems + +If you have suggestions for adding or removing problems, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. + +It is required that any changes made to the problems (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md* and in *README.md* file in the relevant category folder. If you skip this step, I will not merge the changes! From 362d2bfad5807178ebb05419b78da34fcbea147e Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 20:08:27 +0530 Subject: [PATCH 005/107] Added ways of contributing! --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 33aa3e9e1..bb52f85e5 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,11 @@ This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/the =============================== -**Note**: If you fork this repo to solve these projects in any language of your choice, I suggest you remove all my code, and start from scratch; you'll benefit a lot. In any case, **do not send pull requests for replacing my code**. This is my space to store my code. That said, if you have suggestions for adding or removing problems, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new). +#### [CONTRIBUTING] (https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) + +See whays of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. + +================================ Some details about this repo: From 50a8b205b1d911392eccb1cc32f06b3f67fae1d0 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 20:09:45 +0530 Subject: [PATCH 006/107] Now contains only the problems, no blurb! --- README-scratch.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/README-scratch.md b/README-scratch.md index b9b34f041..78de7ff6f 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -1,14 +1,6 @@ Mega Project List ======== -**Note**: If you fork this repo to solve these projects in any language of your choice, I suggest you remove all my code, and start from scratch; you'll benefit a lot. In any case, **do not send pull requests for replacing my code**. This is my space to store my code. That said, if you have suggestions for adding or removing problems, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new). - -I will link to each project that I complete. Some will be in this same repo, some bigger ones will have dedicated repos. - -To get started, fork this repo, delete this README and rename [*README-scratch.md*](https://github.com/thekarangoel/Projects/blob/master/README-scratch.md) to *README.md*. - -=============================== - Numbers --------- From 9301d64c3a71f690e0d28e551f2e2c883e61513d Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 20:11:13 +0530 Subject: [PATCH 007/107] Describe contributions further! --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bb52f85e5..1a1f12789 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,9 @@ This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/the =============================== -#### [CONTRIBUTING] (https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) +### [CONTRIBUTING] (https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) -See whays of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. +See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. ================================ From 103b99db76c492e8e9b0514db351cd081cc45267 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 20:21:35 +0530 Subject: [PATCH 008/107] Added instructions on including sources. Improved formatting. --- CONTRIBUTING.md | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3f4b762a0..8af03cb26 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,24 +5,29 @@ How to Contribute Please **do not send pull requests for replacing my code**. If you'd like to contribute solutions, please see the following instructions: -* Solve the problem, and keep it in your repo. DO NOT send merge request yet. -* Find the problem in this [README](https://github.com/thekarangoel/Projects/blob/master/README.md) file. -* Edit the file in this format (notice the double square brackets): +- Solve the problem, and keep it in your repo. DO NOT send merge request yet. - **This is a problem** - And here goes it's description. \[[octocat]]\(link-to-octocats-solution) \[[you]]\(link-to-your-solution) +- Find the problem in this [README](https://github.com/thekarangoel/Projects/blob/master/README.md) file. + +- Edit the file in this format (notice the double square brackets): + + \**This is a problem** - And here goes it's description. \[[octocat]]\(link-to-octocats-solution) \[[your_username]]\(link-to-your-solution) -This results in something like this: + This results in something like this: + + **This is a problem** - And here goes it's description. [[octocat]](link-to-octocats-solution) [[your_username]](link-to-your-solution) -**This is a problem** - And here goes it's description. [[octocat]](link-to-octocats-solution) [[you]](link-to-your-solution) +- Please respect other people and do not delete or move anyone else's link. Place your solution at the end of the list of solutions. -* Please respect other people and do not delete or move anyone else's link. Place your solution at the end of the list of solutions. -* Save/Commit the README.md file. -* Send a pull request for this commit ONLY! +- Save/Commit the README.md file. +- Send a pull request for this commit ONLY! ===================================== -## Problems +## Projects + +If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. -If you have suggestions for adding or removing problems, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. +It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md* and in *README.md* file in the relevant category folder. If you're copying a project from some other webpage, you **MUST** link to it in the *Sources* section at the bottom of repo's *README.md* and *README-scratch.md*. -It is required that any changes made to the problems (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md* and in *README.md* file in the relevant category folder. If you skip this step, I will not merge the changes! +If you skip any step(s), I will not merge the changes! From 2f2e54ce117bab906f8b0c26c374fefc2131d7ea Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 21:11:45 +0530 Subject: [PATCH 009/107] Count words done --- Text/count_words.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Text/count_words.py diff --git a/Text/count_words.py b/Text/count_words.py new file mode 100644 index 000000000..a9ac636a7 --- /dev/null +++ b/Text/count_words.py @@ -0,0 +1,27 @@ +""" +Count Words in a String - Counts the number of individual +words in a string and display the top 5/10 most used words. +""" + +from collections import defaultdict +import operator + +if __name__ == '__main__': + text = raw_input('Enter some text: \n') + words = text.split() # very naive approach, split at space + + counts = defaultdict(int) # no need to check existence of a key + + # find count of each word + for word in words: + counts[word] += 1 + + # sort the dict by the count of each word, returns a tuple (word, count) + sorted_counts = sorted(counts.iteritems(), \ + key=operator.itemgetter(1), \ + reverse=True) + + # print top 5 words + for (i, (word, count)) in enumerate(sorted_counts): + if i < 5: + print (word, count) From 5a46e95767b1f4ecd9d8b61464975f119e21550d Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 21:14:18 +0530 Subject: [PATCH 010/107] Add link to count_words.py --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a1f12789..fad43be24 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ Text [**Check if Palindrome**](https://github.com/thekarangoel/Projects/blob/master/Text/palindrome.py) - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” -**Count Words in a String** - Counts the number of individual words in a string and display the top 5/10 most used words. +[**Count Words in a String**](https://github.com/thekarangoel/Projects/blob/master/Text/count_words.py) - Counts the number of individual words in a string and display the top 5/10 most used words. **Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* From bb4c5a0cfd860110cb98a8dd418f360fcb922a19 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 08:32:34 +0530 Subject: [PATCH 011/107] More python way of limiting results by jrwren --- Text/count_words.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Text/count_words.py b/Text/count_words.py index a9ac636a7..113c31f81 100644 --- a/Text/count_words.py +++ b/Text/count_words.py @@ -22,6 +22,5 @@ reverse=True) # print top 5 words - for (i, (word, count)) in enumerate(sorted_counts): - if i < 5: + for (word,count) in sorted_counts[:5]: # thanks @jrwren for this! print (word, count) From 7b9915065117beafee062f696a3410ddeb2690f8 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 12:52:35 +0530 Subject: [PATCH 012/107] Fixed a weird encoding issue in hyphens --- Classes/README.md | 32 ++-- Databases/README.md | 26 +-- Files/README.md | 32 ++-- Graphics and Multimedia/README.md | 34 ++-- Networking/README.md | 30 ++-- Numbers/README.md | 30 ++-- Numbers/calc.py | 2 +- Numbers/fibonacci.py | 2 +- README-scratch.md | 258 +++++++++++++++--------------- Text/README.md | 34 ++-- Text/reverse.py | 2 +- Threading/README.md | 8 +- Web/README.md | 32 ++-- 13 files changed, 261 insertions(+), 261 deletions(-) diff --git a/Classes/README.md b/Classes/README.md index cc7230a43..e65e2f1fc 100644 --- a/Classes/README.md +++ b/Classes/README.md @@ -1,36 +1,36 @@ Classes --------- -**Product Inventory Project** – Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. -**Movie Store** – Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. +**Movie Store** - Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. -**Airline / Hotel Reservation System** – Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. +**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. -**Student Grade Book Application** – Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. +**Student Grade Book Application** - Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. **Bank Account Manager** \- Create a class called “Account” which will be an abstract class for three other classes called “CheckingAccount”, “SavingsAccount” and “BusinessAccount”. Manage credits and debits from these accounts through an ATM style program. -**Library Catalog** – Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. +**Library Catalog** - Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. -**Patient / Doctor Scheduler** – Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. +**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. -**Recipe Creator and Manager** – Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. +**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. -**Image Gallery** – Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. +**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. -**Class to Handle Large Numbers** – We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. +**Class to Handle Large Numbers** - We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. -**Chart Making Class / API** – Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. +**Chart Making Class / API** - Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. -**Shape Area and Perimeter Classes** – Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. +**Shape Area and Perimeter Classes** - Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. -**Matrix Class** – A class to manage matrices. Add, subtract and multiple matrices. +**Matrix Class** - A class to manage matrices. Add, subtract and multiple matrices. -**Flower Shop Ordering To Go** – Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. +**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. -**Vending Machine** – Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. +**Vending Machine** - Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. -**Josephus Problem** – Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” +**Josephus Problem** - Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” -**Family Tree Creator** – Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. +**Family Tree Creator** - Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. diff --git a/Databases/README.md b/Databases/README.md index 3d163a593..6c443e871 100644 --- a/Databases/README.md +++ b/Databases/README.md @@ -1,28 +1,28 @@ Databases --------- -**SQL Query Analyzer** – A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. +**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. -**Remote SQL Tool** – A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. +**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. -**Baseball / Other Card Collector** – Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. +**Baseball / Other Card Collector** - Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. -**Report Generator** – Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. +**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. -**Database Backup Script Maker** – A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. +**Database Backup Script Maker** - A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. -**Event Scheduler and Calendar** – Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. -**Budget Tracker** – Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. -**Address Book** – Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. -**TV Show Tracker** – Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. +**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. -**Travel Planner System** – Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. +**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. -**Entity Relationship Diagram (ERD) Creator** – A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. +**Entity Relationship Diagram (ERD) Creator** - A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. -**Database Translation (MySQL SQL Server)** – A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. +**Database Translation (MySQL SQL Server)** - A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. -**Web Board (Forum)** – Create a forum for you and your buddies to post, administer and share thoughts and ideas. +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. diff --git a/Files/README.md b/Files/README.md index 9dece259f..789b13fb3 100644 --- a/Files/README.md +++ b/Files/README.md @@ -1,34 +1,34 @@ Files --------- -**Quiz Maker** – Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. +**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. -**Quick Launcher** – A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. +**Quick Launcher** - A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. -**File Explorer** – Create your own windows explorer program but with added features, better searching, new icons and other views. +**File Explorer** - Create your own windows explorer program but with added features, better searching, new icons and other views. -**Sort File Records Utility** – Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. +**Sort File Records Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. -**Add Transactions In File and Find Averages** – Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. +**Add Transactions In File and Find Averages** - Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. -**Create Zip File Maker** – The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. +**Create Zip File Maker** - The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. -**PDF Generator** – An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. -**Bulk Renamer and Organizer** – This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. +**Bulk Renamer and Organizer** - This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. -**Mp3 Tagger** – Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. +**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. -**Log File Maker** – Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. +**Log File Maker** - Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. -**Excel Spreadsheet Exporter** – Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. +**Excel Spreadsheet Exporter** - Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. -**RPG Character Stat Creator** – Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. +**RPG Character Stat Creator** - Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. -**Image Map Generator** – Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. +**Image Map Generator** - Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. -**File Copy Utility** – Create a utility that can do bulk file copying and backups of other files. +**File Copy Utility** - Create a utility that can do bulk file copying and backups of other files. -**Code Snippet Manager** – Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. +**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. -**Versioning Manager** – Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. +**Versioning Manager** - Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. diff --git a/Graphics and Multimedia/README.md b/Graphics and Multimedia/README.md index 8ef8f579b..fe3db4924 100644 --- a/Graphics and Multimedia/README.md +++ b/Graphics and Multimedia/README.md @@ -1,36 +1,36 @@ Graphics and Multimedia --------- -**Slide Show** – Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. +**Slide Show** - Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. -**Mind Mapper** – Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. +**Mind Mapper** - Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. -**Import Picture and Save as Grayscale** – A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. +**Import Picture and Save as Grayscale** - A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. -**Stream Video from Online** – Try to create your own online streaming video player. +**Stream Video from Online** - Try to create your own online streaming video player. -**Mp3 Player (and Other Formats)** – A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. +**Mp3 Player (and Other Formats)** - A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. -**Bulk Picture Manipulator** – This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. +**Bulk Picture Manipulator** - This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. -**CD Burning App** – Create a utility that simply burns data to a CD. +**CD Burning App** - Create a utility that simply burns data to a CD. -**YouTube Downloader** – A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. +**YouTube Downloader** - A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. -**Wallpaper Manager** – Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) +**Wallpaper Manager** - Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) -**Screen Capture Program** – Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. +**Screen Capture Program** - Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. -**Image Browser** – This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. +**Image Browser** - This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. -**Traffic Light Application** – See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! +**Traffic Light Application** - See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! -**MP3 to Wav Converter** – MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. +**MP3 to Wav Converter** - MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. -**Signature Maker** – Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. +**Signature Maker** - Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. -**Screen Saver** – Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. +**Screen Saver** - Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. -**Watermarking Application** – Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. -**Turtle Graphics** – This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. +**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. diff --git a/Networking/README.md b/Networking/README.md index ba28d933a..2d56c9224 100644 --- a/Networking/README.md +++ b/Networking/README.md @@ -1,33 +1,33 @@ Networking --------- -**FTP Program** – A file transfer program which can transfer files back and forth from a remote web sever. +**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. -**Get Atomic Time from Internet Clock** – This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. -**Chat Application (IRC or MSN Style)** – Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. +**Chat Application (IRC or MSN Style)** - Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. -**Fetch Current Weather** – Get the current weather for a given zip/postal code. +**Fetch Current Weather** - Get the current weather for a given zip/postal code. -**P2P File Sharing App** – Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. +**P2P File Sharing App** - Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. -**Port Scanner** – Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. +**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. -**Mail Checker (POP3 / IMAP)** – The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. -**Packet Sniffer** – A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. +**Packet Sniffer** - A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. -**Country from IP Lookup** – Enter an IP address and find the country that IP is registered in. +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. -**Whois Search Tool** – Enter an IP or host address and have it look it up through whois and return the results to you. +**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. -**Zip / Postal Code Lookup** – Enter a zip or postal code and have it return which city/cities that are in that zip code. +**Zip / Postal Code Lookup** - Enter a zip or postal code and have it return which city/cities that are in that zip code. -**Remote Login** – Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. +**Remote Login** - Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. -**Site Checker with Time Scheduling** – An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. +**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. -**Small Web Server** – A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. +**Small Web Server** - A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. -**Web Bot** – An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. +**Web Bot** - An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. diff --git a/Numbers/README.md b/Numbers/README.md index 0ac7d99a2..b70dd6a39 100644 --- a/Numbers/README.md +++ b/Numbers/README.md @@ -1,32 +1,32 @@ Numbers --------- -**Find PI to the Nth Digit** – Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. +**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. -**Fibonacci Sequence** – Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. +**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. -**Prime Factorization** – Have the user enter a number and find all Prime Factors (if there are any) and display them. +**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. -**Next Prime Number** – Have the program find prime numbers until the user chooses to stop asking for the next one. +**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. -**Find Cost of Tile to Cover W x H Floor** – Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. +**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. -**Mortgage Calculator** – Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. +**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. -**Change Return Program** – The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. +**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. -**Binary to Decimal and Back Converter** – Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. +**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. -**Calculator** – A simple calculator to do basic operators. Make it a scientific calculator for added complexity. +**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. -**Unit Converter (temp, currency, volume, mass and more)** – Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. +**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. -**Alarm Clock** – A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. +**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. -**Distance Between Two Cities** – Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. +**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. -**Credit Card Validator** – Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). +**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). -**Tax Calculator** – Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. +**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. -**Dijkstra’s Algorithm** – Create a program that finds the shortest path through a graph using its edges. +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. diff --git a/Numbers/calc.py b/Numbers/calc.py index 3d8dd66a5..9daf8371e 100644 --- a/Numbers/calc.py +++ b/Numbers/calc.py @@ -1,6 +1,6 @@ # -*- coding: cp1252 -*- """ -Calculator � A simple calculator to do basic operators. +Calculator - A simple calculator to do basic operators. """ if __name__ == '__main__': diff --git a/Numbers/fibonacci.py b/Numbers/fibonacci.py index 4e20a55a6..a6692a94f 100644 --- a/Numbers/fibonacci.py +++ b/Numbers/fibonacci.py @@ -1,5 +1,5 @@ # -*- coding: cp1252 -*- -# Fibonacci Sequence � Enter a number and have the +# Fibonacci Sequence - Enter a number and have the # program generate the Fibonacci sequence to that number # or to the Nth number diff --git a/README-scratch.md b/README-scratch.md index 78de7ff6f..5c3e750ca 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -4,289 +4,289 @@ Mega Project List Numbers --------- -**Find PI to the Nth Digit** – Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. +**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. -**Fibonacci Sequence** – Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. +**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. -**Prime Factorization** – Have the user enter a number and find all Prime Factors (if there are any) and display them. +**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. -**Next Prime Number** – Have the program find prime numbers until the user chooses to stop asking for the next one. +**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. -**Find Cost of Tile to Cover W x H Floor** – Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. +**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. -**Mortgage Calculator** – Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. +**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. -**Change Return Program** – The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. +**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. -**Binary to Decimal and Back Converter** – Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. +**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. -**Calculator** – A simple calculator to do basic operators. Make it a scientific calculator for added complexity. +**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. -**Unit Converter (temp, currency, volume, mass and more)** – Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. +**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. -**Alarm Clock** – A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. +**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. -**Distance Between Two Cities** – Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. +**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. -**Credit Card Validator** – Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). +**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). -**Tax Calculator** – Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. +**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. -**Dijkstra’s Algorithm** – Create a program that finds the shortest path through a graph using its edges. +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. Text --------- -**Reverse a String** – Enter a string and the program will reverse it and print it out. +**Reverse a String** - Enter a string and the program will reverse it and print it out. -**Pig Latin** – Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. +**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. -**Count Vowels** – Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. +**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. -**Check if Palindrome** – Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” +**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” -**Count Words in a String** – Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. +**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. -**Text Editor** – Notepad style application that can open, edit, and save text documents. Add syntax highlighting and other features. +**Text Editor** - Notepad style application that can open, edit, and save text documents. Add syntax highlighting and other features. -**RSS Feed Creator** – A program which can read in text from other sources and put it in RSS or Atom news format for syndication. +**RSS Feed Creator** - A program which can read in text from other sources and put it in RSS or Atom news format for syndication. -**Post it Notes Program** – A program where you can add text reminders and post them. You can have the program also add popup reminders. +**Post it Notes Program** - A program where you can add text reminders and post them. You can have the program also add popup reminders. -**Quote Tracker (market symbols etc)** – A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. -**Guestbook / Journal** – A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. -**News Ticker and Game Scores** – A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. +**News Ticker and Game Scores** - A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. -**Fortune Teller (Horoscope)** – A program that checks your horoscope on various astrology sites and puts them together for you each day. +**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. -**Vigenere / Vernam / Ceasar Ciphers** – Functions for encrypting and decrypting data messages. Then send them to a friend. +**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. -**Random Gift Suggestions** – Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. -**Text to HTML Generator** – Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. +**Text to HTML Generator** - Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. -**CD Key Generator** – Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. +**CD Key Generator** - Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. -**Regex Query Tool** – A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. +**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. Networking --------- -**FTP Program** – A file transfer program which can transfer files back and forth from a remote web sever. +**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. -**Get Atomic Time from Internet Clock** – This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. -**Chat Application (IRC or MSN Style)** – Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. +**Chat Application (IRC or MSN Style)** - Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. -**Fetch Current Weather** – Get the current weather for a given zip/postal code. +**Fetch Current Weather** - Get the current weather for a given zip/postal code. -**P2P File Sharing App** – Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. +**P2P File Sharing App** - Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. -**Port Scanner** – Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. +**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. -**Mail Checker (POP3 / IMAP)** – The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. -**Packet Sniffer** – A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. +**Packet Sniffer** - A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. -**Country from IP Lookup** – Enter an IP address and find the country that IP is registered in. +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. -**Whois Search Tool** – Enter an IP or host address and have it look it up through whois and return the results to you. +**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. -**Zip / Postal Code Lookup** – Enter a zip or postal code and have it return which city/cities that are in that zip code. +**Zip / Postal Code Lookup** - Enter a zip or postal code and have it return which city/cities that are in that zip code. -**Remote Login** – Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. +**Remote Login** - Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. -**Site Checker with Time Scheduling** – An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. +**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. -**Small Web Server** – A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. +**Small Web Server** - A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. -**Web Bot** – An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. +**Web Bot** - An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. Classes --------- -**Product Inventory Project** – Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. -**Movie Store** – Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. +**Movie Store** - Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. -**Airline / Hotel Reservation System** – Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. +**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. -**Student Grade Book Application** – Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. +**Student Grade Book Application** - Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. **Bank Account Manager** \- Create a class called “Account” which will be an abstract class for three other classes called “CheckingAccount”, “SavingsAccount” and “BusinessAccount”. Manage credits and debits from these accounts through an ATM style program. -**Library Catalog** – Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. +**Library Catalog** - Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. -**Patient / Doctor Scheduler** – Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. +**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. -**Recipe Creator and Manager** – Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. +**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. -**Image Gallery** – Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. +**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. -**Class to Handle Large Numbers** – We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. +**Class to Handle Large Numbers** - We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. -**Chart Making Class / API** – Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. +**Chart Making Class / API** - Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. -**Shape Area and Perimeter Classes** – Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. +**Shape Area and Perimeter Classes** - Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. -**Matrix Class** – A class to manage matrices. Add, subtract and multiple matrices. +**Matrix Class** - A class to manage matrices. Add, subtract and multiple matrices. -**Flower Shop Ordering To Go** – Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. +**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. -**Vending Machine** – Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. +**Vending Machine** - Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. -**Josephus Problem** – Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” +**Josephus Problem** - Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” -**Family Tree Creator** – Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. +**Family Tree Creator** - Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. Threading --------- -**Create A Progress Bar for Downloads** – Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. +**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. -**Download Manager** – Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. +**Download Manager** - Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. -**Chat Application (remoting style)** – Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. +**Chat Application (remoting style)** - Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. -**Bulk Thumbnail Creator** – Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. +**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. Web --------- -**WYSIWG (What you see is what you get) Editor** – Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. +**WYSIWG (What you see is what you get) Editor** - Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. -**Web Browser with Tabs** – Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. +**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. -**Page Scraper** – Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. -**File Downloader** – An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. +**File Downloader** - An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. -**Telnet Application** – Create an application which can telnet into servers across the internet and run basic commands. +**Telnet Application** - Create an application which can telnet into servers across the internet and run basic commands. -**Online White Board** – Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. +**Online White Board** - Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. -**Bandwidth Monitor** – A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. -**Bookmark Collector and Sorter** – An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. +**Bookmark Collector and Sorter** - An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. -**Password Safe** – A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. +**Password Safe** - A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. -**Media Player Widget for iGoogle** – Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. +**Media Player Widget for iGoogle** - Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. -**Text Based Game Like Utopia** – Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. +**Text Based Game Like Utopia** - Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. -**Scheduled Auto Login and Action** – Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. +**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. -**E-Card Generator** – Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. -**Content Management System** – Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. -**Template Maker** – Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. +**Template Maker** - Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. -**CAPTCHA Maker** – Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. +**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. Files --------- -**Quiz Maker** – Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. +**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. -**Quick Launcher** – A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. +**Quick Launcher** - A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. -**File Explorer** – Create your own windows explorer program but with added features, better searching, new icons and other views. +**File Explorer** - Create your own windows explorer program but with added features, better searching, new icons and other views. -**Sort File Records Utility** – Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. +**Sort File Records Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. -**Add Transactions In File and Find Averages** – Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. +**Add Transactions In File and Find Averages** - Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. -**Create Zip File Maker** – The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. +**Create Zip File Maker** - The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. -**PDF Generator** – An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. -**Bulk Renamer and Organizer** – This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. +**Bulk Renamer and Organizer** - This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. -**Mp3 Tagger** – Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. +**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. -**Log File Maker** – Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. +**Log File Maker** - Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. -**Excel Spreadsheet Exporter** – Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. +**Excel Spreadsheet Exporter** - Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. -**RPG Character Stat Creator** – Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. +**RPG Character Stat Creator** - Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. -**Image Map Generator** – Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. +**Image Map Generator** - Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. -**File Copy Utility** – Create a utility that can do bulk file copying and backups of other files. +**File Copy Utility** - Create a utility that can do bulk file copying and backups of other files. -**Code Snippet Manager** – Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. +**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. -**Versioning Manager** – Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. +**Versioning Manager** - Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. Databases --------- -**SQL Query Analyzer** – A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. +**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. -**Remote SQL Tool** – A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. +**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. -**Baseball / Other Card Collector** – Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. +**Baseball / Other Card Collector** - Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. -**Report Generator** – Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. +**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. -**Database Backup Script Maker** – A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. +**Database Backup Script Maker** - A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. -**Event Scheduler and Calendar** – Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. -**Budget Tracker** – Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. -**Address Book** – Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. -**TV Show Tracker** – Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. +**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. -**Travel Planner System** – Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. +**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. -**Entity Relationship Diagram (ERD) Creator** – A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. +**Entity Relationship Diagram (ERD) Creator** - A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. -**Database Translation (MySQL SQL Server)** – A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. +**Database Translation (MySQL SQL Server)** - A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. -**Web Board (Forum)** – Create a forum for you and your buddies to post, administer and share thoughts and ideas. +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. Graphics and Multimedia --------- -**Slide Show** – Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. +**Slide Show** - Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. -**Mind Mapper** – Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. +**Mind Mapper** - Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. -**Import Picture and Save as Grayscale** – A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. +**Import Picture and Save as Grayscale** - A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. -**Stream Video from Online** – Try to create your own online streaming video player. +**Stream Video from Online** - Try to create your own online streaming video player. -**Mp3 Player (and Other Formats)** – A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. +**Mp3 Player (and Other Formats)** - A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. -**Bulk Picture Manipulator** – This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. +**Bulk Picture Manipulator** - This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. -**CD Burning App** – Create a utility that simply burns data to a CD. +**CD Burning App** - Create a utility that simply burns data to a CD. -**YouTube Downloader** – A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. +**YouTube Downloader** - A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. -**Wallpaper Manager** – Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) +**Wallpaper Manager** - Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) -**Screen Capture Program** – Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. +**Screen Capture Program** - Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. -**Image Browser** – This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. +**Image Browser** - This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. -**Traffic Light Application** – See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! +**Traffic Light Application** - See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! -**MP3 to Wav Converter** – MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. +**MP3 to Wav Converter** - MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. -**Signature Maker** – Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. +**Signature Maker** - Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. -**Screen Saver** – Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. +**Screen Saver** - Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. -**Watermarking Application** – Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. -**Turtle Graphics** – This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. +**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. ========================= diff --git a/Text/README.md b/Text/README.md index e8c37c9fe..c75f64b88 100644 --- a/Text/README.md +++ b/Text/README.md @@ -1,36 +1,36 @@ Text --------- -**Reverse a String** – Enter a string and the program will reverse it and print it out. +**Reverse a String** - Enter a string and the program will reverse it and print it out. -**Pig Latin** – Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. +**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. -**Count Vowels** – Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. +**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. -**Check if Palindrome** – Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” +**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” -**Count Words in a String** – Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. +**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. -**Text Editor** – Notepad style application that can open, edit, and save text documents. Add syntax highlighting and other features. +**Text Editor** - Notepad style application that can open, edit, and save text documents. Add syntax highlighting and other features. -**RSS Feed Creator** – A program which can read in text from other sources and put it in RSS or Atom news format for syndication. +**RSS Feed Creator** - A program which can read in text from other sources and put it in RSS or Atom news format for syndication. -**Post it Notes Program** – A program where you can add text reminders and post them. You can have the program also add popup reminders. +**Post it Notes Program** - A program where you can add text reminders and post them. You can have the program also add popup reminders. -**Quote Tracker (market symbols etc)** – A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. -**Guestbook / Journal** – A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. -**News Ticker and Game Scores** – A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. +**News Ticker and Game Scores** - A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. -**Fortune Teller (Horoscope)** – A program that checks your horoscope on various astrology sites and puts them together for you each day. +**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. -**Vigenere / Vernam / Ceasar Ciphers** – Functions for encrypting and decrypting data messages. Then send them to a friend. +**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. -**Random Gift Suggestions** – Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. -**Text to HTML Generator** – Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. +**Text to HTML Generator** - Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. -**CD Key Generator** – Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. +**CD Key Generator** - Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. -**Regex Query Tool** – A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. +**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. diff --git a/Text/reverse.py b/Text/reverse.py index eb97aecf3..5cec022c3 100644 --- a/Text/reverse.py +++ b/Text/reverse.py @@ -1,6 +1,6 @@ # -*- coding: cp1252 -*- """ -Reverse a String � Enter a string and the program +Reverse a String - Enter a string and the program will reverse it and print it out. """ diff --git a/Threading/README.md b/Threading/README.md index cf50d2b28..3caaec781 100644 --- a/Threading/README.md +++ b/Threading/README.md @@ -1,10 +1,10 @@ Threading --------- -**Create A Progress Bar for Downloads** – Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. +**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. -**Download Manager** – Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. +**Download Manager** - Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. -**Chat Application (remoting style)** – Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. +**Chat Application (remoting style)** - Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. -**Bulk Thumbnail Creator** – Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. +**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. diff --git a/Web/README.md b/Web/README.md index 07ef3554a..312f0f323 100644 --- a/Web/README.md +++ b/Web/README.md @@ -1,34 +1,34 @@ Web --------- -**WYSIWG (What you see is what you get) Editor** – Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. +**WYSIWG (What you see is what you get) Editor** - Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. -**Web Browser with Tabs** – Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. +**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. -**Page Scraper** – Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. -**File Downloader** – An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. +**File Downloader** - An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. -**Telnet Application** – Create an application which can telnet into servers across the internet and run basic commands. +**Telnet Application** - Create an application which can telnet into servers across the internet and run basic commands. -**Online White Board** – Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. +**Online White Board** - Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. -**Bandwidth Monitor** – A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. -**Bookmark Collector and Sorter** – An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. +**Bookmark Collector and Sorter** - An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. -**Password Safe** – A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. +**Password Safe** - A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. -**Media Player Widget for iGoogle** – Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. +**Media Player Widget for iGoogle** - Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. -**Text Based Game Like Utopia** – Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. +**Text Based Game Like Utopia** - Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. -**Scheduled Auto Login and Action** – Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. +**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. -**E-Card Generator** – Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. -**Content Management System** – Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. -**Template Maker** – Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. +**Template Maker** - Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. -**CAPTCHA Maker** – Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. +**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. From 4e2963957c9c68108e6ae7867068f8532a3a7403 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 13:52:08 +0530 Subject: [PATCH 013/107] Removed some projects --- README.md | 96 ++++++++++++------------------------------------------- 1 file changed, 21 insertions(+), 75 deletions(-) diff --git a/README.md b/README.md index fad43be24..8c05fad7a 100644 --- a/README.md +++ b/README.md @@ -78,75 +78,49 @@ Text **Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* -**RSS Feed Creator** - A program which can read in text from other sources and put it in RSS or Atom news format for syndication. +**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. -**Post it Notes Program** - A program where you can add text reminders and post them. You can have the program also add popup reminders. +**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* -**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* -**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. - -**News Ticker and Game Scores** - A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* **Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. **Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. - -**Text to HTML Generator** - Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* -**CD Key Generator** - Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. +**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* -**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. +**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. Networking --------- **FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. - -**Chat Application (IRC or MSN Style)** - Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. - -**Fetch Current Weather** - Get the current weather for a given zip/postal code. - -**P2P File Sharing App** - Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. **Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. -**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. -**Packet Sniffer** - A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. - -**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* **Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. -**Zip / Postal Code Lookup** - Enter a zip or postal code and have it return which city/cities that are in that zip code. - -**Remote Login** - Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. - **Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. -**Small Web Server** - A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. - -**Web Bot** - An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. - Classes --------- -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. - -**Movie Store** - Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. **Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. -**Student Grade Book Application** - Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. - -**Bank Account Manager** - Create a class called “Account” which will be an abstract class for three other classes called “CheckingAccount”, “SavingsAccount” and “BusinessAccount”. Manage credits and debits from these accounts through an ATM style program. - -**Library Catalog** - Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. +**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. **Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. @@ -154,67 +128,39 @@ Classes **Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. -**Class to Handle Large Numbers** - We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. - -**Chart Making Class / API** - Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. - -**Shape Area and Perimeter Classes** - Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. - -**Matrix Class** - A class to manage matrices. Add, subtract and multiple matrices. +**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. **Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. -**Vending Machine** - Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. - -**Josephus Problem** - Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” - -**Family Tree Creator** - Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. +**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. Threading --------- **Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. -**Download Manager** - Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. - -**Chat Application (remoting style)** - Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. - **Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. Web --------- -**WYSIWG (What you see is what you get) Editor** - Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* **Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. - -**File Downloader** - An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. +**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* -**Telnet Application** - Create an application which can telnet into servers across the internet and run basic commands. +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. -**Online White Board** - Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. - -**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. - -**Bookmark Collector and Sorter** - An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. - -**Password Safe** - A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. - -**Media Player Widget for iGoogle** - Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. - -**Text Based Game Like Utopia** - Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. +**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* **Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. -**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. - -**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. -**Template Maker** - Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* -**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. +**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. Files --------- From d8bfe9c2fb0637aa90a80974aef783589113914d Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 14:00:53 +0530 Subject: [PATCH 014/107] Removed more very hard, duplicate problems --- README.md | 34 ++++++---------------------------- 1 file changed, 6 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 8c05fad7a..817ed7c90 100644 --- a/README.md +++ b/README.md @@ -167,35 +167,17 @@ Files **Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. -**Quick Launcher** - A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. +**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. -**File Explorer** - Create your own windows explorer program but with added features, better searching, new icons and other views. +**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. -**Sort File Records Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. +**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* -**Add Transactions In File and Find Averages** - Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. - -**Create Zip File Maker** - The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. - -**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. - -**Bulk Renamer and Organizer** - This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* **Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. -**Log File Maker** - Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. - -**Excel Spreadsheet Exporter** - Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. - -**RPG Character Stat Creator** - Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. - -**Image Map Generator** - Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. - -**File Copy Utility** - Create a utility that can do bulk file copying and backups of other files. - -**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. - -**Versioning Manager** - Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. +**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* Databases --------- @@ -204,13 +186,9 @@ Databases **Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. -**Baseball / Other Card Collector** - Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. - **Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. -**Database Backup Script Maker** - A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. - -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create re-occurrence events that reoccur every day, week, month, year etc. **Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. From 58e35041ce00e426c71d99168a79870b898b2315 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 14:03:45 +0530 Subject: [PATCH 015/107] Moving around some problems into correct categories --- README.md | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 817ed7c90..aecbb83bb 100644 --- a/README.md +++ b/README.md @@ -160,6 +160,8 @@ Web **Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. + **CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. Files @@ -188,22 +190,16 @@ Databases **Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create re-occurrence events that reoccur every day, week, month, year etc. +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* -**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. **TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. **Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. -**Entity Relationship Diagram (ERD) Creator** - A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. - -**Database Translation (MySQL SQL Server)** - A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. - -**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. - Graphics and Multimedia --------- From 64d7e880bcd3010de5c9caa7146bbc980b97ae9f Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 14:07:06 +0530 Subject: [PATCH 016/107] Removed more very hard, duplicate problems, sorted categories --- README.md | 32 ++++---------------------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index aecbb83bb..15367c4af 100644 --- a/README.md +++ b/README.md @@ -203,39 +203,15 @@ Databases Graphics and Multimedia --------- -**Slide Show** - Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. - -**Mind Mapper** - Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. - -**Import Picture and Save as Grayscale** - A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. +**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* **Stream Video from Online** - Try to create your own online streaming video player. -**Mp3 Player (and Other Formats)** - A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. - -**Bulk Picture Manipulator** - This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. - -**CD Burning App** - Create a utility that simply burns data to a CD. - -**YouTube Downloader** - A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. - -**Wallpaper Manager** - Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) - -**Screen Capture Program** - Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. - -**Image Browser** - This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. - -**Traffic Light Application** - See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! - -**MP3 to Wav Converter** - MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. - -**Signature Maker** - Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. - -**Screen Saver** - Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. +**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. -**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* -**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. +**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* =============================================== From 0a9183cd45bc9a9523e42e073bb055ead0d5248f Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 14:08:24 +0530 Subject: [PATCH 017/107] Replicate README --- README-scratch.md | 178 ++++++++++------------------------------------ 1 file changed, 37 insertions(+), 141 deletions(-) diff --git a/README-scratch.md b/README-scratch.md index 5c3e750ca..c3f24ff03 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -47,77 +47,51 @@ Text **Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. -**Text Editor** - Notepad style application that can open, edit, and save text documents. Add syntax highlighting and other features. +**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* -**RSS Feed Creator** - A program which can read in text from other sources and put it in RSS or Atom news format for syndication. +**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. -**Post it Notes Program** - A program where you can add text reminders and post them. You can have the program also add popup reminders. +**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* -**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* -**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. - -**News Ticker and Game Scores** - A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* **Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. **Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. - -**Text to HTML Generator** - Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* -**CD Key Generator** - Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. +**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* -**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. +**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. Networking --------- **FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. - -**Chat Application (IRC or MSN Style)** - Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. - -**Fetch Current Weather** - Get the current weather for a given zip/postal code. - -**P2P File Sharing App** - Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. **Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. -**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. - -**Packet Sniffer** - A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. -**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* **Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. -**Zip / Postal Code Lookup** - Enter a zip or postal code and have it return which city/cities that are in that zip code. - -**Remote Login** - Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. - **Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. -**Small Web Server** - A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. - -**Web Bot** - An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. - Classes --------- -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. - -**Movie Store** - Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. **Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. -**Student Grade Book Application** - Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. - -**Bank Account Manager** \- Create a class called “Account” which will be an abstract class for three other classes called “CheckingAccount”, “SavingsAccount” and “BusinessAccount”. Manage credits and debits from these accounts through an ATM style program. - -**Library Catalog** - Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. +**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. **Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. @@ -125,102 +99,58 @@ Classes **Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. -**Class to Handle Large Numbers** - We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. - -**Chart Making Class / API** - Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. - -**Shape Area and Perimeter Classes** - Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. - -**Matrix Class** - A class to manage matrices. Add, subtract and multiple matrices. +**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. **Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. -**Vending Machine** - Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. - -**Josephus Problem** - Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” - -**Family Tree Creator** - Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. +**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. Threading --------- **Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. -**Download Manager** - Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. - -**Chat Application (remoting style)** - Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. - **Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. Web --------- -**WYSIWG (What you see is what you get) Editor** - Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* **Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. - -**File Downloader** - An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. - -**Telnet Application** - Create an application which can telnet into servers across the internet and run basic commands. - -**Online White Board** - Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. - -**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. - -**Bookmark Collector and Sorter** - An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. - -**Password Safe** - A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. +**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* -**Media Player Widget for iGoogle** - Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. -**Text Based Game Like Utopia** - Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. +**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* **Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. -**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. -**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* -**Template Maker** - Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. -**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. +**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. Files --------- **Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. -**Quick Launcher** - A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. - -**File Explorer** - Create your own windows explorer program but with added features, better searching, new icons and other views. - -**Sort File Records Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. - -**Add Transactions In File and Find Averages** - Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. +**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. -**Create Zip File Maker** - The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. +**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. -**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. +**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* -**Bulk Renamer and Organizer** - This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* **Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. -**Log File Maker** - Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. - -**Excel Spreadsheet Exporter** - Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. - -**RPG Character Stat Creator** - Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. - -**Image Map Generator** - Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. - -**File Copy Utility** - Create a utility that can do bulk file copying and backups of other files. - -**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. - -**Versioning Manager** - Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. +**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* Databases --------- @@ -229,68 +159,34 @@ Databases **Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. -**Baseball / Other Card Collector** - Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. - **Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. -**Database Backup Script Maker** - A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* -**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. - -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. **TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. **Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. -**Entity Relationship Diagram (ERD) Creator** - A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. - -**Database Translation (MySQL SQL Server)** - A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. - -**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. - Graphics and Multimedia --------- -**Slide Show** - Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. - -**Mind Mapper** - Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. - -**Import Picture and Save as Grayscale** - A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. +**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* **Stream Video from Online** - Try to create your own online streaming video player. -**Mp3 Player (and Other Formats)** - A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. - -**Bulk Picture Manipulator** - This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. - -**CD Burning App** - Create a utility that simply burns data to a CD. - -**YouTube Downloader** - A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. - -**Wallpaper Manager** - Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) - -**Screen Capture Program** - Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. - -**Image Browser** - This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. - -**Traffic Light Application** - See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! - -**MP3 to Wav Converter** - MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. - -**Signature Maker** - Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. - -**Screen Saver** - Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. +**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. -**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* -**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. +**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* -========================= +=============================================== Sources ======= -[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) \ No newline at end of file From 51bccc06fa2f0d97dae43d66cc800c5464afbc8a Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 14:12:02 +0530 Subject: [PATCH 018/107] Categor readme files updated --- Classes/README.md | 24 ++++------------------- Databases/README.md | 18 ++++------------- Files/README.md | 28 +++++---------------------- Graphics and Multimedia/README.md | 32 ++++--------------------------- Networking/README.md | 25 ++++-------------------- Text/README.md | 20 ++++++++----------- Threading/README.md | 6 +----- Web/README.md | 28 ++++++++------------------- 8 files changed, 38 insertions(+), 143 deletions(-) diff --git a/Classes/README.md b/Classes/README.md index e65e2f1fc..c37fd9d63 100644 --- a/Classes/README.md +++ b/Classes/README.md @@ -1,17 +1,11 @@ Classes --------- -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. - -**Movie Store** - Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. **Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. -**Student Grade Book Application** - Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. - -**Bank Account Manager** \- Create a class called “Account” which will be an abstract class for three other classes called “CheckingAccount”, “SavingsAccount” and “BusinessAccount”. Manage credits and debits from these accounts through an ATM style program. - -**Library Catalog** - Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. +**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. **Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. @@ -19,18 +13,8 @@ Classes **Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. -**Class to Handle Large Numbers** - We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. - -**Chart Making Class / API** - Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. - -**Shape Area and Perimeter Classes** - Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. - -**Matrix Class** - A class to manage matrices. Add, subtract and multiple matrices. +**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. **Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. -**Vending Machine** - Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. - -**Josephus Problem** - Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” - -**Family Tree Creator** - Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. +**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. \ No newline at end of file diff --git a/Databases/README.md b/Databases/README.md index 6c443e871..6ca5485da 100644 --- a/Databases/README.md +++ b/Databases/README.md @@ -5,24 +5,14 @@ Databases **Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. -**Baseball / Other Card Collector** - Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. - **Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. -**Database Backup Script Maker** - A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. - -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* -**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. **TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. -**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. - -**Entity Relationship Diagram (ERD) Creator** - A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. - -**Database Translation (MySQL SQL Server)** - A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. - -**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. +**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. \ No newline at end of file diff --git a/Files/README.md b/Files/README.md index 789b13fb3..881155570 100644 --- a/Files/README.md +++ b/Files/README.md @@ -3,32 +3,14 @@ Files **Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. -**Quick Launcher** - A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. +**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. -**File Explorer** - Create your own windows explorer program but with added features, better searching, new icons and other views. +**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. -**Sort File Records Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. +**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* -**Add Transactions In File and Find Averages** - Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. - -**Create Zip File Maker** - The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. - -**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. - -**Bulk Renamer and Organizer** - This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* **Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. -**Log File Maker** - Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. - -**Excel Spreadsheet Exporter** - Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. - -**RPG Character Stat Creator** - Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. - -**Image Map Generator** - Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. - -**File Copy Utility** - Create a utility that can do bulk file copying and backups of other files. - -**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. - -**Versioning Manager** - Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. +**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* \ No newline at end of file diff --git a/Graphics and Multimedia/README.md b/Graphics and Multimedia/README.md index fe3db4924..f7aa3ce9a 100644 --- a/Graphics and Multimedia/README.md +++ b/Graphics and Multimedia/README.md @@ -1,36 +1,12 @@ Graphics and Multimedia --------- -**Slide Show** - Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. - -**Mind Mapper** - Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. - -**Import Picture and Save as Grayscale** - A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. +**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* **Stream Video from Online** - Try to create your own online streaming video player. -**Mp3 Player (and Other Formats)** - A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. - -**Bulk Picture Manipulator** - This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. - -**CD Burning App** - Create a utility that simply burns data to a CD. - -**YouTube Downloader** - A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. - -**Wallpaper Manager** - Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) - -**Screen Capture Program** - Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. - -**Image Browser** - This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. - -**Traffic Light Application** - See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! - -**MP3 to Wav Converter** - MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. - -**Signature Maker** - Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. - -**Screen Saver** - Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. +**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. -**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* -**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. +**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* \ No newline at end of file diff --git a/Networking/README.md b/Networking/README.md index 2d56c9224..d222d7db4 100644 --- a/Networking/README.md +++ b/Networking/README.md @@ -3,31 +3,14 @@ Networking **FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. - -**Chat Application (IRC or MSN Style)** - Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. - -**Fetch Current Weather** - Get the current weather for a given zip/postal code. - -**P2P File Sharing App** - Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. **Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. -**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. -**Packet Sniffer** - A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. - -**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* **Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. -**Zip / Postal Code Lookup** - Enter a zip or postal code and have it return which city/cities that are in that zip code. - -**Remote Login** - Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. - -**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. - -**Small Web Server** - A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. - -**Web Bot** - An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. - +**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. \ No newline at end of file diff --git a/Text/README.md b/Text/README.md index c75f64b88..9cfb18abb 100644 --- a/Text/README.md +++ b/Text/README.md @@ -11,26 +11,22 @@ Text **Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. -**Text Editor** - Notepad style application that can open, edit, and save text documents. Add syntax highlighting and other features. +**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* -**RSS Feed Creator** - A program which can read in text from other sources and put it in RSS or Atom news format for syndication. +**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. -**Post it Notes Program** - A program where you can add text reminders and post them. You can have the program also add popup reminders. +**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* -**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* -**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. - -**News Ticker and Game Scores** - A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* **Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. **Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. - -**Text to HTML Generator** - Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* -**CD Key Generator** - Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. +**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* -**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. +**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. \ No newline at end of file diff --git a/Threading/README.md b/Threading/README.md index 3caaec781..70550fd4e 100644 --- a/Threading/README.md +++ b/Threading/README.md @@ -3,8 +3,4 @@ Threading **Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. -**Download Manager** - Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. - -**Chat Application (remoting style)** - Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. - -**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. +**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. \ No newline at end of file diff --git a/Web/README.md b/Web/README.md index 312f0f323..82708b573 100644 --- a/Web/README.md +++ b/Web/README.md @@ -1,34 +1,22 @@ Web --------- -**WYSIWG (What you see is what you get) Editor** - Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* **Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. +**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* -**File Downloader** - An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. -**Telnet Application** - Create an application which can telnet into servers across the internet and run basic commands. - -**Online White Board** - Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. - -**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. - -**Bookmark Collector and Sorter** - An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. - -**Password Safe** - A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. - -**Media Player Widget for iGoogle** - Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. - -**Text Based Game Like Utopia** - Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. +**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* **Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. -**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. -**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* -**Template Maker** - Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. -**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. +**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. \ No newline at end of file From 41a87a14c6ada85cfdc3c4c3af81833ef9c1920c Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 14:27:23 +0530 Subject: [PATCH 019/107] Added some problems to Numbers --- Numbers/README.md | 8 ++++++++ README-scratch.md | 8 ++++++++ README.md | 9 +++++++++ 3 files changed, 25 insertions(+) diff --git a/Numbers/README.md b/Numbers/README.md index b70dd6a39..ce820a66d 100644 --- a/Numbers/README.md +++ b/Numbers/README.md @@ -30,3 +30,11 @@ Numbers **Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. + +**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. + +**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. + +**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. + +**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* \ No newline at end of file diff --git a/README-scratch.md b/README-scratch.md index c3f24ff03..340dbd411 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -34,6 +34,14 @@ Numbers **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. +**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. + +**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. + +**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. + +**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* + Text --------- diff --git a/README.md b/README.md index 15367c4af..e6ff54517 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,14 @@ Numbers **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. +**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. + +**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. + +**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. + +**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* + Text --------- @@ -219,3 +227,4 @@ Sources ======= [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +[Rosetta Code](http://rosettacode.org/) From 2231272e1ad19ad694db70385811f260a5e2a0df Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 16:18:54 +0530 Subject: [PATCH 020/107] Made it to top monthly list! Whooo --- .../top-languages-python-2013-07-25.png | Bin 0 -> 238584 bytes RECOGNITION/top5-monthly-2013-07-25.png | Bin 0 -> 80168 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 RECOGNITION/top-languages-python-2013-07-25.png create mode 100644 RECOGNITION/top5-monthly-2013-07-25.png diff --git a/RECOGNITION/top-languages-python-2013-07-25.png b/RECOGNITION/top-languages-python-2013-07-25.png new file mode 100644 index 0000000000000000000000000000000000000000..a33d5ab8b477e5972c3b873f483b16aafdf6370e GIT binary patch literal 238584 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

SBLzXJ(Pl!)0 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 z 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⪤_xXX7|YZNN<@%k`VFy(RKdGz3)jh;bM5Q zF-`7QX;Pu&I&v4gQ>yQe0dPG(Ip8!|h@%)*b|Ni-ULF zX(qbg2YS=gv(uYkI~3C^P4NV=Ftk|_EZ=2o{m;XD`>#8P!uh63;9G^v(i);8MRoGh zaDj0=UZeSwXyLwb`?IOyQ&jB~s~PlJwe%ONs65QBWT1mMFA9fp0|;2Dzblgeaai&G z8({kmlA|oDC~dkdfaRz?e-*7wU8#$N0hjBc-cuo9x@KaNuI1Mb`oT`zg26w*mljVF zv*5CZpKqn9S-|o8ESnO9G5-Jdf>Lt*GdS&OP~&P$G66L+MgjY6e22a1Ocq$d0Iu#X zpdIoADo2${RN#JqjCoRP`~)vP6M_4{;{^LC6jRhsUvgk@1i4}6vKe4DAqiF1o{hGo zNrk%si0HtzDJ*umLqxit5C<>0H9tjy>P?O`f$e7P#(TlIlniKWa>SZ(2YlBc!K%~I z)>wC6tDoeYcKp_`e5h>Uz59z1S}dthA+d4IQZiO%l8{X9T26J#ma+-fKU%z$l zd+~`HkM>#2y@*wfp>)%6NOoH5tlSjG^i4lk2mPM-Ne%}5%jXL6i|&cT7r_;&WcGF1 zD-HL${}_M17!qHBbq~WS4#$?ED+8GSLOg>}2TQkgBiQ>sF&X6D88d~q>T(}vyY3ag zPySm^^beW8#^4%EJ%vJ-xV7U(UntW-k#fq8c9 zd?Y|U-0`=;P{DWP!GHM+DNx0Tc9f^2*@T2c+e|#y-pOs3lj4c6v?oeT>4tEt(ypAg zx(3BT)>v0!Jeb(rZ*?*dr3gTI&^6fB!aK22#Pp8w>J|KPr7#7kJ(q>)aCu^(tKh|@ z>)wf6X*|5RZ2n6|*(bS>)|3Oec2d8<+AsmNGh)8f_RQ!UX;CZSkA6sJm3n-=%xfkXG`)jL+_p%zLMhKnQLzR1a|%AU#nn(4&5X z@TcQ`?|=ZduLvi$Wn=16Si24_*Kh}Vwu~~FiKDiy%$p~R%0Qimvb9^4$Ur6N(dRgp z(Q(#K(#luXGwh&JtS1t$4j+^_kfh0R#aQ&=z4X<-tHnfbFVDsxN`F0E9yoFQS`F#a zoU+dyN|WsjK&kx}9Wrcca>@~n%Z&#GOGd}V zKn|OEFPnaaO3R&R+BL`D8AF)hjsw<4@15qOamUNxuUgA_yte-&5&1pLdF`!Do}4HI zo+mL0Cr+d$Lwd{UB6=nN)a?GQ&E0vJQ3gVc?_u;*UEa2(4qO=Z$089~5Ys>fO`Y_^ zbb$KdXSJ0!=c6VV^PubJD>!Ba(r48Iu0O_4*jghj6a+xu^PB6po7!<{Fgra6v&*gi z>-c?P9p4^e?@9~nHl)7F&7%1?k|FVZPb-Con6~~!6hI7gbko$;6ll4@BGH|`0;P;Z zHYjM6EVn+|z75w%FNQ@iK|9gSOnd554!>QN;eGT2XLrqK5Lsc~@_Bv6)He=Klku6J zP1ph{eJ?=Xr#58xoJ1$!#Vq4ay zE|Lb=-=p8)FCAFz=+9DLT`-bc3hejE_?%*o#E>6MF~i;wN?KjPd5kHDjqAS0v5aq| z*mP;xT0sXlNinsrQ5+OGVTh=8;|#IFq)l8kcLy8Xp|wJ$!X>cfFpp3`X zlvSpv^(bn|$=nBrXd;N!GBLf3z*OeDZr`)cnGu@QO>n7Wd032LJ3s-IWfbm9fEF)} z*BCQns99I`L-V47r?jddA<;_rwM82xw(qyWDjmNGQ>?j(DefaPh-Jqr|#_Gkhy8`iTQQ`fPq1sErlC3Zlt zOUh>>ddtMF-=3KR&>8&^h|w>I_CjeMZS&LJsdNK`4W7z#n0?XgCTleZ5fzeZx#UW_ z_u9vrVfr1!Z`6AevWVUaSHv|Zj(AM|^KzZamLIu7KYN+%F8SKhpgix#%19k|)wK}? zSozT_`Mb}zNq!N079rii>7U3s#&0^8h6)Ezc)Qh?XxW!T?gMBvygUF2!P6`wls8~Qeym?V#?tPqQtD95@2wUcqwNP(E|N7JnhR)W zHM^64agHj{qxxNuE_lJ)U`+pq!KHcKpYvMlP+P)sYqplt<#ab-G+VK43;r$~IH#%k zib(0Y{6F%eQZh)qu3q0&57huR2bo^}?y|pv70?;3)~qQVtSs8Ck%Nir2mwKe6LN>!(aWed_8~ zu%1nLmPeaLC0SZpioMVQv=-kQ+Ve(W!qV|!??kel9^NIgDA12hvtmZe zV!-dnM~P;1Ld?_JI^NuCswVHCDxXbox-mNI(KN0mb2V623+D_h8&}Hl%=s~ZVYKpe zX|vtu!}p?E;P?LgaiIYR9pJyv@CgLKiN=*qp?N2@u!7Q%ubHwwdJhVs{tw`)^*=aY z+foh>k%r-1d^_O|if7j=wt2u{^*K8`JG0M#_`lcU-<$DvD6l2n8w5LI?QBZt0e!-a zp#81?$9Gfp|DbPntKH!)#8Fmrbz`zZ1^*(C{r#KL&)t9_{2>lUUtlZwzrdvDUh9(g zTJUwA>?w->Jpq83V2%&`fD-&IK3;h6-xK4XH~;J3y=cW3?<`-O_}3tO1SISL3f2dtU3_ovZYXsMcN35q zHJ-{#!~%5UuMG{PKr}nzc~eEmq9b};e4~>m;#@dC$>Ypws+DrKIsD*-!!BT^P@LY| z`}YHR#)?GOixHEW+AsAul7r1!PH{or(X#V50g2!#jcLEnm5s=nj@boM^C5CQGfVn? zDfawuB^FiS@qG=pQ~EgsQUsW?1V9pa-ixcN6F~A#CUF&jqZlZUyh+dz)$cP;M~$}z!tK<16=l-VxWq75W=DJF(*81=@e6{YrT=7UX}NbUa11t0;u zA*Jqd#JJ9n9rqPY3EUC{1YFad0uWQ@t1XE?<^5V%K0d^KzciwP&Z6TMppy1D?|ae8 z^9n21%4It5U|o2)on#P^*f0&)jPM_$-o=EEly&%7d||Qka{v@MnDUAL*Ub#TdEXQg&Ay!UKNasIHh5x zCHF?cUsY4)fRxIK6ZnFtl`T8D3`dHuFXT&h87+ zgQs0BZuvI~5QA9V@`ozxiH1iqze>fO{H<-{f*^ATKt_81WdWN5QLyYILpbjlh%Y5d zVC{g?6?^MUl`;0Gl0T(2p#QXyOWRy#-@OM;i|juZ0%Pt^1YFQPb3}Ls3M#eXcU`9+ z^mN4BP^4%NAG#$ejM5Fy-n4s`bfqXJ7mKs~%e>;wmXdUokA z-(5sD**zjrCMouDCOjrZI~&-OMf_V~2f3_=JywR_pG>5}YIcrvn;s+(e0(C!LG09g zW^c#V^`lC4iN3t*{o>)Dr4%mTlCqiRQC5%?Jn3i!U26^Sx4q}mr|)1MPAA_jkiu_r7X&)9A?`EvjRUDkU>)G#xj@6p|ctMrAFV8!tCbAFp^3dW# zg#SlJKiqd&rN3zH{!rP(OI|(HP_0qTT+J?zkAgM&NvqIS+cPaVU{#0zQR=Xwr{$`V zmHr#4s&3r>zO&{{krff#pq?us3Dq3pSIIU`w_Q$?u}~(?x7F z2?jV{n9HH;#z4qR_3|L}>@u=+xy)+N?SyA8$O%ESow#^L^YZnQh^eDbAR9^DaPdi68<)v?FwgqnmZ$Y*XG zDFus?#p|0CJ8i5Fru!l(<5@T+A%V--1pK z_ub1xgw;)nu@`9anLRh!>`aEuz$f=59;>b8r19bHbZ%*n(~0gb*N;pkMpHXAPF+E_ zL-X}5QtC-Nw^-=tD9B6X&p#s7N=vs-QxWjL`!!0RDfH+Z5%AnYl;yiltuy_p{|K6R zsB}Qi81kb}sx-KThM{0WmmFx32Ge?LCH8Zq2%A@i;@#1=E)&VzQ=DIBX{mizr>^CC z`t@D+Dx0pBlg;MOoNWzqHUv1E&?KZD%v7PHax0j*#KfJlRF9Rx2j<|aUoA~9sxEux75*aJTH1t$uf?BaaS#b5)b6H2F1I?XFMIk#e-Ms_zh4{rEp;R}L$(Is)=# zM=EWoNW0tBK0}6eI{18P^!v(#PM!;4M-@_HgSSRQ;}gni(+^m5XMG2a+=p{NnEk%aFUB4Ly4JAFm@K|` zG(Kp0dG2|3!*qG_q$|2rJSmMDp_mNO5p{m#^h*r0yCKyj;9C^xLR;n&M9EJCGp0Ff z2X2xnL6=advm?U{U*mxB;)IA)XoPC7xk90))y;!!)(&gEousEXHdXRYPua~>!y%2C zj9!^D7zG}(f|@@-hqsA783jn+>+OneWf!ekA_dBe^QsJvafN@=qJ68AG?DTpyCGGi zfxb|+kO(Uof}S3Terr!zCV+v<;!pH1Ci98;u$%{Z3V!Ecrf1LjVZLl5aTQbRE?tc7>q3_dx^%ErXN?RzYZHtn{w&vqwdr9G#yO39!V|Qd~rp;mkmLu_)7Z-g+^#pt! z#)iay@a54{?!0~xlixWsXf7*c4Ta6bx>ncK?!u^aJYD>suqy{ftdsU{-d)c`vQcj7 z7u?!B1d~>k1ps|UtJNF#Lb`t9fLQPZcDu}Ead8Aqy>?`4W?bep31&8WSQYYrE>@GU z>ymV9MWcC?*{0Fdsl_3tJ?)S?*jaV?go47L_lW|l;tPgA;JHc4pXW++)Ma31-Jk&u6BL5&Uh!VH8z#wEARhn1hDA;O(y27zyb9^0 zrkVAB6Z6$KzH-JGa7(3pBasp1+P8X5aw_9V6B!ow^Ol#^hZ(1T(;NA}s#qs+5?aGHPS!=x3EsZATY!k9kGV0* zk&huSUewbLY|mx^@@e~hAF{hJT-1aPpvAK`{~l2Xuxqs_)5kL3afNh}r50ko(4Ra8 zdhm!8T~>CE5qi+G)TN0VM@?CY%D%oj`F4??^ur95{sep2JrwSYem4CfvIDPUm6s&P zq1uDRx1e?NxbV9OW{)v%%nq>XosO+N+0Y$Ya7cp;T`_{Gpy*FpK70xAA5D{Ao4Ivb z;6(ev`MtM;=jCvk0=5RjFwN12N)NU8z|9(61oC)<*WNEpu(2vRp`l0gPVAHGisc)o zMDq)21sBj;A6l?g4zCD^%3Nac6IngBXErDKMGFQd*%7`AUk*Rnh+d5Cb za(s^*cav$+2pTPS*Rw0acH^XBRNje>e zJHBB2m=*dsc@L__Nj;?IBf#}2=KjoE5 zSf;74hw3F_d#jtz5Qk_pe4Tw-g@>PtHFpdcTl-62sxgLNfm>UI-m2#5QOu}IfI_b| z`RYTKRtQ{igxR0!bAvRuLsaQYKad|LVn|PUjhOZAFzBi6fu{tF+5Coq)#f#n7Ka@_u(G;pe>6e`J&A?b;?K0`a$yLefRf>sv*gQE@ zP*E!B{K-z~PYfp?`Z2Imy?ND5iJW6QKJDaz7>y~RqE(mM1;Mwf_Q^CmCY!qXXcCes zFCYT}yec-of912^R%;~f1i0Tka?YbJ#6mCbe80S=ae$D%EHlIo$43ufixz&Osl#VN zk`x9FKz%_XW2tgq_8z9<(-oh#PL(O-MJNXxFFyNtyyof>4jMMqp>)`f3#EuN!y&sU zp`J&L4h>?m+_3o#R4H%yi2hZg`e&phCuq-9u{<9wXdRsogwU zu{NVzo%*JcD+NSRDF_1GtupO#N4pfnUI~Amwn4fw`a0M4T{gAwqjtGnY6X^Lf)(L@aR=`So%mPZuYXl1Z#U#u+iX; z^c`i{28RhI-M z$|psJH^ROMLpm>7@l4Hnsf13X?Pa>hr zRCvaDA6ob=!Cpn?E^etnGi2)mb4nfyLRKb2G%kZe@^X!@j9+DH`ykC|uCTBt6PV1W zhy>JY3IxLk^w#4`W$@OV%V_)Z$l>4kCwj+cHkL82Y(=8&stVhsOw-v5ji5?A%V2R>vbb71&+>j(wU!dwBj`8{ir&KerX)TZBJI@ zN~dwzAEs>TIVdWEBG=U}CezeVLMyG=S1U)V3*2Lk`sosWc2SttL5Cy)V+Y@V2*ay? z7?4k1E2j(?0qRku4^JF0Fg4c7S`9cQP0Q3IEJ>T+SWD5FdaN$wjDhxCp>)uSL# zkJu&pr<)l;9}r3|>Y3!ZSC)?}-@kpEOF)pm-v>}y^4*V9CrDqTcO-?L&!N^dma8|? z(@3dvxNJh1u}xr&1G4lkOK&kT`SO|mQrELC)>n%*FC$YFyy3#wXG?p@5cqiXaP6r0 z&?b*@%KXfaJPLVM*(qN^du@Kw6I;fIN!1EW~Z)207e3$U#zK7~C296OK_K{pU zN3e%j!I84NRSox-0PIE)X@IqJoEIwdgeZe`7?;9I(zAFOUov6P6 ziOK+{;*AHy=ml+c66E)YqTpwN!-q6!Syr|9+6-_l?z$@4C0B|9((dQMI%|1E!S^evu`m`+DSeW3O=PL! zw>$GfgmXP#V`z{53HtHS+;kp{|FJ+TroAph2E$jxfX4-K+j zP+;s{$v=I;cNC2)2i_O;v?i}}0ljfczT)Onhx@Zk&2o0l4oZy&x6;lv30BX#|7KUs z`YYepFY1=?;hWp-MtyaCj=IF~!eB%K>2_Y%8+6uFJ?AUZ#^bkkt9u)dt)KqcxPe#s zKwwV)Ayfdeqp&=HP=WIBp^MO~pr2s%Fo=FbPBYPui^t;bNg*L}1X1Ll*NgtD1|IC##r57Pv#vn5Y*zUY*v8 z?eRa0RPRwbV|ej|gQ}AePxh6VjmI}O{@dsiZQ}CZ>F4Xu*)~r-qR(l6JlgHONgj|uM!m%^CC)~&mD za|&OOpQNDIi-*uQWt(Ac`ws@0VeV8(Pe_^msmO8314#TfAbVt>%>9q~id4CO7#KOo z%_|HIq`hjbP2CGs37W2YkLd50)2p%h#sc`SxQSse84qhzeBpn9C39Z4;aWW5t?sd# znf8U~MMheya%R0ftcYc(v^HA*FArFL8Nx}2N*{9xfr6IDj z#e%mBbkq7e+4C~Y^l0`2Pi)1`xikzOF1IA3Qn9gKKWX??g+8o#o%8)C9r-P#!nG@h zaN^fA&BQcWg=6?^`6f-jW3+(s^jI>glgIqRPnQV>h2hN4?iw7kCKSz|S?h!XdfJ3c z&I@zWCp7z|oEjK4b@iRcVgn{@NDjW9bI-;N#53G&y3>`i0W3)8qea}^%DGVI3;ymV zw}*|z4y^+nz17fYAB|5L(bkAfh{mPTyFN}ngKg2`5cgq$k|$uROOV8ZFrg*}YyEz% zusZ9ztS;}-zX>)#xj5%ejp>FDTeXpK%!_+xw&Bkz&rOjkO8QF%ZJNJGxVu;`5$KM0{%Vtqm(S_=A@3 zr$gDWDCBlIb#iPhX#rKVCfy22;#ZQ-1)fb-$)Cq&OFC!CJIg-GuM0jq1`oYIcJ9F? zJNdxdjO1D=1?(#otve*1pFERa4KqlxAgf<&?iyDJ=3;hVM^7P+KHyNzaa?$KOKc85{csVIAR2tOs|OQnMK8@Cg>elgcxsCTqx`QeXN?s@CcSSZnUj=yCr6HP1V z7gwGut@*++!>Yvq+0%Pcx%z9@($UaJU17_1b-S5_yV%VTzjW`jkEerz#1;t)#-n-U zlk6hok7FrXMc34Ed2bdzw%;;(-qtXVYVTK>zbFTygw4{X2Mrg`AHLRCnhDHZIgDph#NQEp$vkqHsfVq4=BWMe?18h>`T zSX}BoS1sFmLwng=rrpu(b*;%BsVi5y4R6Wu8WrB631-Xjn;3s&(TxK8Y@Kr*s7tt4 zqggjt$>ixI1ZZ)-cc~Qx=gO#8=f>%;z9)et+h2~ZrRl6R^4h(ABHH2)0f1BWaEO=F zj%P~OZ~+%e<-2s>7>;uogO6v^Gk5YCS zFV%E8qnJt2a~&HFd18ZI``=pE9Sq~e2y{g}RECFl#{kYV%j*f&;~y0h`Mdy}?CoK@ zet36e6B-Nd8ZHjbS1MzGURP8d+3XI2(LOiZs-EQ2?bXXWIICY_cWW2-)i~b;$E>ro z`Amim#ZZH_7>(kVNnA)aT!tc2E2UX=Fi$dd0&q_|Xq4i9B%F-^#hHx|&fB2F^qA+H z!Hz$x$b)DkW=}8h6DLXi*vjQiKjgkEAdmoACnkOv{6*@gmMh&77vRe7s0t1=r_=IZ`w5if2+^E-jQ9o{Me<~EG z{FOG}wP$4W6(iU@Lt<%l#Sx%o#u$t>y^uMMpCKmcgc>=l6A?V&Y$uM6^h!dEgXvB= zEoI#PGGd(GtlXY<*6%Uu_;T(8}8U1eX;=RigzQt@Tm4p4U+meVM-nXE~4QoQ`k4 z)VQrh6d6-9BnQE3jTBIy{tF+BX9l1|;Xugp1UMHe~0Z@x7Z4!PJHDc98 zer;zTcP)L>fr#xCTbZ}Th0bKh@C7@ zi|s$5I+W@5bE<4RShNPg68#E#g_#nSF7l|i>ZM7zaBN>Tj=g3HbVfCU*@Q#P#}XW3CA(9^(06t+gKz_Y>q0th84U9udRS@b?OiycEgAO7aUK} zNpsq=xbImFYV~P7UPor{cfFfzFl_av!FoYBX{6`V{{U)>?xcypSm55f8~A?K=^>MZ zhZ|_-2g2ED!+^IKl8>;+3rsQ)s&ec%mGcs~)kBFlB>$-~U{GQYO^Ct|_eYm<=A|cQ zY9!!?_>{YQf=~i4*w|(7xccZ&qd}0=q%5?`JoKnyk?YErw(C|H@A!^4xeUY=0b{XU=3Msu!;yyDw^^quH3Pwfkaa0!7gIe?sP zylN2HAv;bIKx|G@6ew3H^-0o;eE($ zNWZX-MNC`>{Yax&XoP^D+EmNnqV!nU>dvBsAd`(9gl{N?I+SkQ7yb0$y2p^gLSKaD zF~o_I zqdpwEs^lJQ7f9m}s%rsJcthD#h@X3%{UeyV<>js+Y`E1H-z7bw9gKKq}I7AY$ElV0Al} zYNr6Y!sulDuwm*EbsxDmvad{rGQG3lq7*?w`B=wgmm!kc;sQZ$mIEqu|MOfRphqmD zW+315NK_xx(^zryz{<8$@0SVRlGX7aa3xIt7P*Fj)I?{SQG~b*zoVvY){lvH+w@pp2W_S7Hq4XdX z9qVyJh?Z=MWtesLK{v)!)y91GP9*F&^a3ar6;MaNE>!0dGu9T-i7zTr?X;gN?z1myXB=usyZRpkyT3q6WDJIqv+(*tV4z6faV#c8nR*JxS|)Tz*{a}7eoi1W7Z0b zU2#IO=_4O-Lt%)mIVE=OOF;g7&ue8veSj#GcJ;>f`5Qu=0XQg-c<@)q;44Ty%m<$S zG;j@)8k9~d`dJ1BdqnQY$jhtgX#rMS`T|tre9!4A2QHG0^X`hx&ozLTddOig220PzbrK~lJNBz$pdHXPb#sdZn z0HC;i!DNN_MR@%`+T1L_rV@n0)yxHOc%649N3pJp%&;cGKWu3w<5< z#FtzLo%R}FD;9!6S$0b!OaEIh|IeR#Q39O-#c83jJ2N$7o7%CmKLD`-myzrL>Q^5i zMhGa72aFRw5Je9R3_O^?a1{7oZub`By|J>l0610ncmzy1N%){&y%pV|pLn*~*P_9d(;zg2 z?;B@#+z~#>ZTLD?hca*6m~&$rG4#H}w+7*&>qRLA9F8O%5glt}1T>KLM_}c#G$JhWG2N}xe z&+i-@oSckpK6vs}Xs|8zUW@tP_5AZ4uWq1#X;RefcmU9yW`e(4Yj;jpJu;n3vRQ%w z8$neIL($LJod`P48KZk!%HkkhdFGHM;yAfdio3W}i%Wp!GqSTE-M@cd#RmlqO$dO?FmZ6w@8c>9MMoT+o}Qjrf|T{@ z%3>Nq*s+O;ccRu(NnYC_*&(+p#5N>UVZ%qw4#jHdFz~-U{qSZ?idtXVj z&=0u3Z#5{(xfkPSEs3my&`Y)p-qq(+rgtV!N}hAbvdz(ZHMC{6KE%vS)4{uk(oec# zM!ke0HJW9w>NR3Hv%FO!+E_3`j=1QY5tNp8#4WKZc!WQ=44{04bQA&^>FLM|DHJ;5 zV}9Y%Y)#-4(Y)$y6K}ge!_^SYtqhntM+72y@^CyzRLy?#GYBQC2 z_zE62ShH^leFCioH=%Z2)2FuF&L?8{CUD2-g$XYA`PP4LJ@pIeZ)@H&^evt$57T$z z{Zu9E!_HgAw7LVoOMB6aQB8cfPqv~x_d<0a_Wt`13MXD3)yRN3DpaeALxPTCF5(su zwbr3peWw9Z^B1=#ZZ5I&w#tH{QNB!LVyT;zXC>~tGLSB1c0rmI0u$J2Xb`J>Gr6C` zBd4U4ou;HxVNuYAuT1`VxjTmDjAA?eETRk*1;skPR4Ns|Xv>ZL`r*BIk^7}hJkRAK z=y^SDo|fp2X>VhXwg?x*PKM4uT~#4D|IOkyxGgF{tifwdSEG5{5wQ9mI6@CAU5er9 zx?1J2&{*6qm%zI;ir3Qsx_1KMkrzy8$1paVE#>zhpb{mjAnZ%UR2UaJ`*4_c(=kj_ zB88Z1?joEA3ZM{c7( z*XX4p9l;8zh7H5_T_OVTj9(N17V@-}M4Wb=F@Abyx%Ms*>Fcjl0)A5%2S`UiBCa!S z;w`_I4%xT+>9jmB6p&~g7n{D4H*OzmC*6?3KqSxeLc?XWYb^AM-mVK<>JEqwB#;DQWcAYUla0=Ufau>%n;E$aTY~P{5$FojvP{bo;)l@}pF(Af%3iO<+HhO;NC|GNsJF2+n4-Cy*>c`lT zW?Tv&{hMeVh*&V`zk@EnwU(4 zGKWNMVXsnDpXV!*p#KGsXBHT2I}AXycaqgq&Mz)nu-!|U;t{9b@%3) zCOasYn6LrEea^(rDabaL<4!POsAl?Z2C!VGZG^dkG|rAT6XfeM(E?-|lz-6+=b2zGr?$oYL;PT;$|s}fT1~A=-s9?Llrt(S zhe;xotOD7vE7p`Yx@x&t$8CxeD$g;M{J#2!Ou{Dx0cz0iwXAfHODlx5f&*j=H7i&l zvQ0OlPow0>Lt$c*iw3G_SdnATIhWs(=SQFP{Ys6%(6z`9Gghjt z|GNj}K9_dxS}S|f(8_dJ%J}2EXP?*1ehbKx0V~T^STzSaRC8HHuI{GwxY)MC?ShZ@ zVfLdbO`Z?dG+a8*$keId-~szKX|ZOo3{}--u}}>iwG`z;|ljC}KEO)v`_= z^~FPUB0dX?Le|a#3A+fOGdFz?P!ebt6!E(uU`=)t2JU}|iqbHE@szl#3+O71d+_Q( z)=o>As#>IYn`SWe2by;KLLw8xw95t&xh2wg6!p_0q0s(h{?2S>33aOqJjQ&AdsC}L zLamwHuL#eKo$cW9YqD==?S1zm-N;|m!OQruL2SeDWcU@uCZHM7(@G`F4)UYuTC@;R zr1r|`Di3HA2u~lSnj8`jC1RMqsOa~1dLqJ;57CLHDc-kB@!C16J*%|5nYvz?QnzT! z3ER+>IQ(8loA1j&r`l!=l8@`#0zUPI@b|@Vy0)qP){fApk)ysIuVQSJvF4UM=fj@3=%lqrcY08WMr<-z13 zAQ>T_381_ZkqfNTSgLae$v`z^g;gfS;{k&;NktBmsq%tCE4ys~Kw(hcYVWxsyW={N zD1mD+Wr$0eMHB0(+6F1QdI9!)c)dKoW6Tnh`6zIQiCCK+mx?5g6gSxUTlnBNAkXT` z;yi{c6s!B&sZGO2Di|?Y6*({;PPcJMo6xZ72}O_F$H5xSd_=FpMF`J}fi&)Lky&5Z zO`!k98dEx=tb6|W!$Gjt*w6uH*sp4|NPxW&DbsPL25N2nI!Wpea$)Q{nXUn zM%h@^GHA6~l5e;nSB(FG3$a%>a{R_Y;TymW*Y>oGg*cIW+BL`MS;!%3j9B!0y(krZ zaSj*l4!YhZ*-KPqm0nIj>V9Z`H=+D)4_kVU8$@3s-%S%}lvyes@C-pfA;NqXis$n1 z%vV+S#IJsn(R>T&VF6ArZ4U=2&gbZk_B7LlVv*EnY2{Ky#gWS`{MEZAep7F=Px{;O z?S7R;j>b)~U)N9IiTcpuj}DRc?Tmftl_7D-x%r}DlKO6DcKRb|TP{7X)~RPv+M3N< zNmB>l7-U6;xhFv%xgi9mQ){HHm`?rSLp}rR=7*;g8p@>xFkp=g&!vkw41; zB7V-Z<;hI&+eY7qhg?5GFEC$;72MU2-;mpUsQW2vm6q{g9voAAY zB#~EU79mQ3rK^Um@Jb&N)%`A14oCW84`5I57RCH+(gXG_2-@9r2+)938>mn+G~)JA zRR&opa80YK1mD$NokNL1?_Hh*+~XELtl4n5GhIk$>bwhzS(ANy-8jk~X^moesa^Bh zqqmXPU0}bi$$hZcp0SXfZXvpbWCGlSIV=XPc-fSZy%&V1DONU@3ek^VlU0xn*0(GI zw8-r~^J5?`ALvAJdb-|ih48)rvMQ-k$vmAsJwJ@0koth8!t|$IuKP|Aa#EsXCO_-z zBxyN4F4%2sY|4rYUyY5zPAG6f;sPuxV%IjHR2;b*1A_EAUaUxRzCr$Oa1*6m+A<7`Yb>Ee9NqXU;b@SaG4NTJ$GNSl|BF}r=Kcr?>t7w`*fY* zk7hOZU2sf7OdtqbLq39rP<|=MHV~f)Ti5Wr!+}+({k%;y8)$I`oL`*V^v*7)iK>|r z5px5tfpBEI#{&;xf$2@|?pj%h@ss^jj6xfY8=U@FRAoTE;iJ=~XMJOA4F=>OlMa8l z^j>xOJu!Msp#xqfY0P2NCUuuw82Ct^KiA~t{lTI(`RI?)U%u?Uek{*kx2Qv`p%Dig z%;4#>IR-l54ZK8g`WVbwPX{SM!)M?_eSz*TC{hOFFbXsP4MHbHnS&X7V_=^E!@;$a z_I@bkR#X<;aJCr4=fLed{I>gv!bg00u}KOb&_wc7WdA$A*1+~9_XTRgO4KYnG+5r?W8dBtr#16=K)as2f;<*lWjLQL z8IY&^^~)}iN6$@_JQbRYCAty*yEgizm&#D6UIgm_ph=P67exkB(a=7q#X8bC!_=na z=B_>yiD~)*3aQ`ksXU|r{(0_ zQ8-pX5mQqVsp%q$KM`Idt&Au;F`g^s zKmNiE=PH`lPrN}hm@&GGB2iJ8O%QP~)&xW+Fn~Hz5{HN=m`=TV?GYa12=1a9NPg)j zz&dWgJ~0{g8EFgGs*!JZ2C%)hPKE%dd*%&WzYl*ash)cg0s=mmL@1Ud|`#-bXjm2%)~ zb?*z%L@Dj-$M*(H+`+$gCZ1g%tz1jnMbKn>0h{c9NQ(84=U5@4)Q_P=;9m zMLgZ?&I=g+jc$bn#5T=%t=StUj+$hSR{DEY+8i31j3o2>8DHh?3ih+d!;zmx0zp@s z93>V%G*v;u2QE}wW;!OR$nx4d=z@kyWJpprLdYy48+*n;gMe$0KB9ANTh^a-1nm9X_Bd4Z$nNR7JfD~9jF&oR&Q5)0WR@S=j9wuol zRfSx#E6+If&1^~WXx{P`sjpsSQWyC=OvsV;(>$GMiq52Tq-kJ$p(hk8=#Os94@Cy& zXpz$c#^3CW@^Eq_zzrL+xs@DWF8d9p0jY(Zd)<3DdX?m&o4S{WyT` zRI{LI0v!SldWz>A#;-67boN>}u;w-Ujj=&lU>MoqB0po=Mdh4uGr> z>!@61lv=H2zmGI_hPE|5^%zy5K|iB)92%=dkqXp%TohX2@3^S-(r~FPc$=!m72Ug! z?HQyX*R33{8oKN_UOys+dTJ-UXgk5wOz5<4^WYunfa!*IvCRB@WiB~hAlcjS# zT^4iHZlrjH==EmmDP>N)#v%Ui6atFjfGSfU7+aoVL5)yU3+REOFD3D231~dFT3Avp zJ5o&9ro9KszIaHd!5Ox7c-mPb7jO=dM;R=^N??!jZH~O-L*1gjTn2xq{KBd@9p^r@ zjZ@5E9qey%eV-qWh8RuJa z6iceY!wy0uHvO)?I>jG9b>PF4j2RXqjEi zEd12gY^Z4j_BjD71<%|PWvZ0(vi)eE**zFErT4A!BdP2yW4{UkFjQ_cl zcd;t{Zr8($-I8m*oX6_@9PUKu`g2MOTYP-h1S;V3H0hW~i;)!Ci+h(=N*T`*-|RLv z{Mz=t(~vh_l&TXHr1HhkUke9sB@h1;tITrSfAsDZdl75GNmu=(C;tFan|P(7hz5H< zS_KRw8W`9y_dOm2PHhdPN}l&xwP-rTKHT%e(s9`a^fKOUzmq6WzowXDdFb_C$u&Yi z6ni9_E@fM?bNwb2f?-U$))b73&#A|&p#UN!tMgU)w3e6yf~m&&tVtd2<(8%_9vWi4 zrv9#u#_xw^u7Id4`3Mx1K*An_CF-en&*+98ycL?3w)`fO$1oI<dt&<6)NC z*snBL*(|`c1Cl+}B z7}_0{Aw<9pe52a2sTcb82P*}Fb-yx<_Ma!ojRd&cHl|J(LbJp7lqbN}q^c;)V&NRt z^R*_}?@6^uE9Inv8i;s8q#~upu28+%ekfP;6OD7zAQz$YdVLqytdC=w zLE7R92B_Wz*+ZoqsRjU2GFQx6KlKW=+Mht?oX#cSbi`8uYbD%7fN;eSUzvfHk#|HU z?L0z^U6+>1a+aXv^X@t+7{gF0hrw_(>=x_@KVVWr#ZZUZ?c+=N!sqaLG>XCV*o$-W zw$_1E#KP4>Qo-r$9AqwP+d9R4eG)6Y0wX*swf8bu*`{Xb&joox)nfx&EA4160_!#9KhR`O_w?T?&)n>+H_0PF$w`R$b77^bqCY-M+Up8cp8RNmdNJQw43QJP3X z_fVs4y>xY;-kmT(R)+4ORD$5tXo1zwhUp;I?z#P?h#y8HsW_oSNK3J}xj}^dzv&i{ z>bVm0Bpm2RKCGptlFl}e%)5F9E|HLHwU5YCKglL@pec&|-PF)F-gfQvgC;@d>BwVt z4WCclLb1laJGdTp?42f8R;6a5(l=2C6s1YniAo?v@+PFbwQrkK%)-ctCZnNlCmU)rOOx=Lp{C^U z$4Qeds*j~I) zMIMXdy95DfNNz))`5S*f1v?9q@MpF!{tcq}kiI9~MwjYQ9gqfHRe8GVC(U8{Y3e)o z^`h1J#iXeuzu=?GJEtKl#_VBv3yQp!mR0fl`gJFF%h(l1&F+hc6%7uKM*IAh8c~0p zH=6u%_L2!IkxVl}Rx>%tGkfb38MV83mFyN=_(s;s(mTd4y$!C2@tpEdvencR%bs>P zoxVzMYr8g(?te;3Bp0V|MDVDBGJN&>Mo-Zv$HX(zq(SI%t`*h^t%evO%|%G75bF`$ zFVPD=e^`Kk%DF991ah*%>^(B#T#}#5KdGC!0sHrmu2kOXESR0PmMVl!69a>Y>40*e z;4G40n&r+PKY-_To{Wqv$V!3KMqY~AauEh9oqZjA+IrBzILKVM0d27;GTo1)Lsw5vxX(oY=qH^UAL!=lp=+>b+3GvJ%`!(`yseKAZ zsnJA0D4YUL%;6ZxKf&}Q>ax@w@>zZ~EFexo6jjfb(B25kIuUK>aKlb-O}k$lkgH(V z)lv8@FT%Ya&FN@hBv$1a6x@{O6XK&NkJH_LkWOq~&ShF2#oy-M$=cu{lPYaCR)arR zj~RAv^iPh%sEFHlP|4T5$ zV0M20P7!Y)`~?VMznis>+EF2b|BLOy-F2gn*kJlbO@fV&YWEN1Mc1Ol*iW-uJoiiP z`Q}1oM3(o58s2f~7pnTHEl{3iLv#Ig#KPZzk7G57w}^G%33bcx2@l{J_!;kCXkl7Bk=mo_O2xLl(O*`& z{j;22q$Ehd`fj*4zr$$qVqCb45_(odp)Hqg@a9IQKuiktN}+%KvqQzWgMq&N8h6T& z+OP`c*}ELZ|9O_YHU;LIeNo5s8>ZKf$OejaJ2op0H!BTq;`9a*H|$W{C7PyI64EQN zD%o{G^y@oB?|Dm*yuhVEH)SzDZ~b7#G* zH#fyN&PSxgsfuPzjHH~pHJfKr#5hm_MqblN+D0Sw&mu?8Q^nDLnGPb6Di)>cTd9_9j@>(b zAxXy2z!ylj9g%2D?Axt$Qj294q(Wk608Z)j_u zh~#YjU(OMcJou7xtCSs#Vqg2Y5}%YRKcyc(J>rQ*+Y0=`<8E~(fqqr~0+)hX zKU>fkWil7`(E-pu@&OzwD;c>@!@HXvNenJC%87|iQTe;VGUV7?RcE9S8v#w=uITd| z;{fFIQZC;N+Dac)doK2z43vvYxmD@B zq0={*(;6kPt1BRxwA+6FMw5hZWx_2%Mn6pzH#RkWF9=JiFf|@aNhPO&3#<$8xH`ML$~>FcWO>Y=I74UWAdrw_A3$wDSX*wqZa}IikxZC1yoP z1zraK1R%a2uKnHpCFg%Q^6&vlkJZ{9DEcFw&R)T#b;cKbTGemuKkG#Wzq}sZ#v;m2 z(J7sEeuEc}u;VUDiuYQxIauRnFhjXTIMTstXLm_l%Cfe`>34McV-x+%qzxWn;!+#d)we|I<#5QOdwqm!Ygyrd3T{J+Wx-racElkRzJV!+%APKir5B>unh9 zR%6KZSWbD(`$D`^vAr@YhN^J!0N2OC%s<}cNQf^UGu<$Wf5*4!KOe`QMNT|m<{a+I7?P-*f$MJ<0zs z0OwZf{Lg!cH?VmFtzQ;|mY)Cp7ykX>W_}0^X5=LPNWcKp`X>UWc zNx;xb+s(`0KviSDe1Pa%N9Yf~%SqF$9^2BB_}_;BVJZux+?G~W4$}Y7HNesh&@~`+ zKlEoo0H8n8MHsDkK#mL_y+ zl>@c?czsF0%S>57&$i|Oub*IQMYkc!}_7v((sCy)eIjRJISY~`tOpt z7x@03G2zEWjIOqquc$r@DiP)QTf1nHXY#(maP&PLwvHMPxZ#2*ty?)z5PxSxj-cX? z#xzZf+iJHK;2_;4O)38N+6q+Gk^*P<>+_#Ln^`Mh@c?2H zCg3oWo|RS8iUZOJ3JQ{zmi_|$)Y!-eShhUi=jR8|1*i~#a&mHV(KTKKbW~gwVCk6V z=jQ=UCE{P&Sl^alYl*$~V6EhTVArzkgRt=-+(}=4 z4@|7j4-jAzmqRZLX`nO}6_uBhQQ-K{H&aFAhYxFzaRXfkXoG{=m(Iz z?fFQnP6Zp%23pO!W2*OQUH)dMm1D-%^&eOJ`PxCpGS8^jvp(W6z2T^?+qiIWmxPeo zi5~~=!3e$LZswEb*2)xsyKb`*kd3U7M~0*RH{~G18qo8l;e$bASETW_)!Q49HJyBv9>qby88D9 zvXkdBGn|!~gU83T9{6QQ<1mjgkwB@8g-u-3C z5ux%eIV2o#AYAFdF8t2~0lc99ldA@L#g(k0nI$)1f#Qd42M45L)=C~m9ezw<jlRY-o5UT^8d_2y9UEr6zw-qW|vUh-|BT)~jon0Ij5U73Pd zn`ZMg3XsMEv9!nnT>2=yc9K0+mVob*wgc zBx>4J=?^4|!Oxz)zF!^jOcH@PJ)NNHnny$h;Qt%=%M441UBtj72My-ovz#RM!YBmHtfX%#bK)ymQPO}gUYgtatxB<_om^ka|CMg||ydNy(X+{yj-nc!z zvDJwlusQh4x7j`&XzkU| z)8AfWk4B7j6X^8qlL?%t~!S*<%pRLb8H#E^zw_X@x*^|BpXk-Z6QapuL_LGa# zLws(hugBJ1y}d%h!hVu34$5KY0P39Pd3`l0$3{#07L{R0!zb3`^6YeLy##+FHXc@! z)#K3nlLIg3Jd^)A;2qhZK9bGHk6fo*4jsC`1AHG9>`g#l#e}Q*2hf?si+Z+kS^f-} zjm$heCSMM*p&#{RzXt-(c3jSzGAy?mw2D^U=^%cE&xmo4cOpmxDPgMm?0B5DpNT}Z zKnkH((u1ufJ&rMjX%){^+g3P$67JhWiY+HHAvzWOup;kSE1oH4sm_1l80De=Zv6ju z;h0!hEPzI+V6yw(rEE?Wz5(NQmWnF&kK=yaQ55NL%6Bv?_ub<36b%9>QZak$|H5@U zuDHTkGrrqG>Pw|zS z=Plb?H1ASOqTPj<4+ynBIr?S0KUyF33orc)kT$q{(6 zi_wurO=g_A6v6vxK|(z@_eqFu;i`R~`>jvL^cr$&o;l9~TlU&iCyb`;rCBf_xq`taGud(^Ww*|UE>o_ zeuK&3%{X!zR6A!XrTWg|iPuujt$DPA1`WL9-SVYDP~4#{BQcj)e&fvv4-nZCiAW$bZp$E@YJM<0o`qYz zs!O8el_Ge&s2`H|q^E+t1Ag^!O1vc)l-Uof*OOP~MPIde~uwXBZ|0vpnm#$D|N;%HSxI{n4KJKI-WTK9($6CB&%Xb-xJ;&x zUPbR6E3`4WB+1me(3`6QMBa5dQcZ|Dy!QE7Np&tV&N<^{bHIYcrfs?2#F+J`Zbv1JdIf+($x03a+ z-!i*4QnB4r%!jBUKmJxX0E8*P4c!}r67MXdzIUSv_gwbU)M&qu;fW1*J{2G}r$C!E z)8#$GQ7_#5cFU16+?66zpST37^9F#Z@7MZ|htAHnc%y^E;DDi<<}CEayhA2&f$OYmTX(sPG+-8Hm7f}EHq zo{ry0YIVPywm0p+r5aCkzkvFneN%~Fp%tmX&D;N|S}D%sP@o>N6LNf0pbKAb zEl0)d=hvM{_C`}R=BlqTD8_a3k8XEpolfahtR2g{W#)l%);>LxBDIfVBIPs)il0jr zSsY;=n>c9!(tQtO%r_a?RDW_lJpa}5DbE*8IlCl9c8d$l7f*w@$B3t{|KFS;*fd`v~3VI{{# zMq(v8ki!G${)?rYC{|s6W|jmQG`F-^=10G^OrqC7k9JCtP_}va5%&3=E_?V9tKSB| zHH4ZDWzIh64E-Bc!oH{gXJ(*=^pU#gv&e_;r#8%k%GDR#C_ne4k}(9Ec3|* zFU5`n{vwwY&BXgdR;ln2`lpI~|I=5%u0M9WL5{BLf`@BscjA^uyrvhDz8kCsCg$ohk-*WL(BE8J01SY0yPF z=nZk}PuD}MhgXC1)@wKip{Of_Un|P+@3r?eVIOD5Z?bQlP1(QQnPD-0=Sim5|L;R7 z{R{yL1kq)x`W8b;#)c_p%RU|-v{XjfZVh%DP12Fd5^rr+-GY_!UbGc|t zO6#lXQCPM%$2*GV;TBRl2YXLD^2WXz8n^o&s5I)l!!lw(I);IDc`Sw)-}=C(b)lUf zT{A#(OPYZ%qtCO`A%Wu%8Tx~`s-NBNM}Ba-{f{1cyiX|;0dKbl!&?5EoLkukW$6b^ z!|C7c@i`pDyt4RDJ*)Q~qSqD=!JSeO zwC0}|Gso>%^wJjy`k@WR1W8oMx+=dr2P1RX_JRX|-nynK!u48PKN~bHX&U;@09%Z1 zpLR*Uf%k6e+mNF@W3+^NoCZ*eV3Fso2`G*fvOeGMVX9vHnAf=cx*$A{6l%S)*dRQy z*P`}cv=*fHgC4PQx~~at(Y)f1>p^>s8|pp9XtB~jrmKI;{)-_8x~fS~&JSunaM&^T zy`T3}AfsCRUk}fL$FZMm-4J#oIts%7SabFyQvm10+I<(SkI`&j#lj^$C#jC*fV(`A znd+o_79u2p_EjH_X2r?#-4&N?bHVb*k_A%&CW;*G4NAc&58FwmTxfGDb($42 zdT)-|3(s@9Y6-r+^oE7RiVSL>T=xBAatT;9c#}85>yi2s!Ga=b6*>9N@RH07L`j1< z=C5`xrzz#g;fREP0S5Z1-DdKd@HsT=UD6Q>q=XUHbozZeYXpG8+g6XLfl#p*u^)LX zUm_r%y5~{2x~l>onK;q%t2j%mzHz~%ewZs^1;y)@hV)FDGs0k3m`rC0ji!sK46fqH z?JwsI1JKJv8D&0Ui`u zmx=I1M$JMezXS#lstoo+bM1mFH=*f54T${zn%J|<)@-_;Pxq20f4(!hly$4IE|>o- zA1H8x;>Vb?yj$7Rdi-An!6o?Hw6JZCgk4}GDwhN4m84$0>_LOuzUwqd zjT%VJmZPGg0u_sd0cL>g_hhW*|1Tc82|}CM;1bK*+$pzH+e6UOW1Y!5%u2%1XxMbFm87#F+! zhG${S#Uj;iT&Se|4$Xbf4);Hp++&f5c|=kFiqn_s1uL0k7RiKA@@=670xf!&w=ER{ zy-?#Z4-t8RaiT&!c~gV-N-jrW(@MuS;n>PLZbfYPZO66z`MIx3@_Rketf2_H<#j;? zN}YC!W@)=BVmA7n!}b^9F)<_0qZk&PK5PYZ zA!O};UxdJ;478AG{Q(t=4Eh4m7l(33cqEdDlmqCBQFuC@go(ctyHCjR14K($Dja{|!TtOExriPz8HgS-uE+UTirkv% zAvw7qeEjS*t;uhuS!udUbpb50b!$Tz;`aF(zp#SZC4?%b#O-eK&w)VxxtK4(G!I+7 znr3kZVS@05niwjqLM4o_9T`Xr(8PpiqfRkik8wrVmi{sq0?Utn+r#4~-~1r8aCzQR zZ15h7k{DZ?qIJX4@vg=0D^;i9j%~f(zj^Az0efn01y9si#vpId9~MA2EzjWFr-Z#z~t z_TBxKrJ>qKc7RQ(^V@L_)tlG{@~Jb=@@GA8y>L8LL=~fNjJG$Eo}S*CXWJrFHmJ1% zQEXgo6OoSF1!4Q#;*YV}08QARfhlI3Y&kv7i7!|3XE6wRXNLKmOd0CF)uDxZKlQDF ze$HOpBYN>YuLAPJmgD0WF?%K56BRqpv5t@E`oUu!Z_Y}?I<{Z;bVL+Ir-Q5?o+XtiGvQ5DVd5Iq87h+)Wh-Dj`ZJXL+3WykZ_g-sd75*pi#Yb0Tg?7 zB6Ql48?iu)%a{yA$M(~$)PsJrtpnN(CEShW6ajKk#;vgg{x{_^|1PA!iaJ1ayOuJ( zfQ#OAZfR9g9D)aD1Li{pb?L;S)RDg{VAPRvw2^I2^}kv3i&kXW+rH>iI|=VlK%dOjH#`5U^!llNzv(bPpHDncDK^EYWdaWmT6asSS;zLuJ$J2-3y=V{%Y_{ znK5>XxY7I8ducf#K--gNiKEMGKMFfSV}VH}eWaaE;h= z02YYtOqd9Md>2`zmQQO3!J`#LZ<4%q z(`Rwgm`_ag$?nH&#!Fe|YDW=@*3Y}2<=UT^Z!JGkSGi#R^5LJM7=YY&FkVkjs;)8f z8}c8H`4~J>#*sF{CHK>jb|gKihb2WTkkSF;XsPppCj~V{T(8ee*!K<+twtlSo%Ov~ zOKyD^R>Lrjs}d!WT`Cy~ecuPf$?5garl=VUWetkq+#=L5o?j(2cW7num5*$MPssJr zV1wzT>LV14O-pnm#lT0xlONb&0(XM%4sea>@7e5>c~bbquVTu427I@nxIT2W2NaT7 zn0(IMB2*EN69U&aofVIPWxw|YN0D`9iKlVfrAu+qK;G!35m;9 zCUYkYL)`jD>Yo?xce8-_?syF#S*+ZU&K6JA zxYlWK_!L9?CJGBM#7G>WuS(4MDVuZ8Kg{H^Pv=dYajeGq#{0=OAPOOG*m-iQ0K2nD{weAHo!9d$Z(fWcPh~6Ulh`4N0~G#dd2Mp6e62;tcsg)j z#Rd8~aVm1T}2R4DT1PcND~E-pwgtHh&(`oAOQsfO7AtH3W`)giVp)w@13A@0wGus>77U* z6p@gGUIIuc-vpoU_i%mrBP%O2>)dnCK4;Il`%WfQt#K}?cZ*}|{yD*d2bk28;0Fh$ zcF_DYKR+~5zv+GPFK%w30QC{za*SR)JIMpVWIk)^uLRA0qN>!h-Gsq5!MFMI-#!av zsy2eoaiG{x6`#E|(twgVN$>YSoM6Q&-hZ?Kh2oYUV3sVoT2zujr7s z6jkH-sDGzWdmH`QDh*Kd=h0`p`pp!vaD&=*$l#VjP9j3=EH(jig)%fD@9$b%VU^uJoE!VVzmi-2L&I5&w-iS?dl%52WOp&q{pNu|6q5#fQ9IMWcfjYd1)5 zD+xwB)Xt8055%2uOz3pS72rZw#j>E+RE^VX+rGv++)P`!0xeb=pzj8?^N6Eq^J+_2(+;Rvp)YrG=GrpGTxe))bk!*}MQWrl0eL(uSmTA7b{39GVK}8jazh$pztZYKFeuGGz|I;Zb%=RECr?ChCE90k^mXp{ zS27h|tFIk8s$YgKypDUa`E;_>PmOXb6aD3AsXh%*^ckHu!&eLT8woz(5eBw5Tu7bMLzVHa3E zHj*jIYdQ(!lyBI0MrRst(Tu6jSD9UMgR@izUb?-@(xW%z=g{)#lfG!{IO0otIeSa! zyhK&ObpCKh-`&UG1dWF}+1jPruVsnU4y;(rzBq@5#d?cL`V4kz1K1SVK7uh}}2bSXOFeXq*F`nzvDz|8TcC7b#YO7g`L z(V|!?MxlHuLo45}h2dFGw(AOFgV?uOUamWomCV2a!zJ}qm{V?3ip62FTpR9HSK8>b z6P6pU8;bP=w?vMx&S5)+hRY<)e2P;aDI0%E5vUurhg`ws7msq&ZE|-b7akwn9e!Bm z`aTusj&wq8W#c@DYS;e4BjoR36A?$jwF(?%S4`v$j=7oiYFjaMellbkxXW#n@Z2V> zFRjB0(&;u8i8gVT2M`Sc5mc+)BVRCC!CTo(&zRlH_l|%hEQJ_|)!tJKT$?-_*^*LP zTzjl?S_mYSF?n{u?cHtiLol1-4vF=loU+leSQ*h(BQ&$F>{4UySlX;9V*V_7% zY*kF{L>OLm@#tLTnBHM@$J^O$)Dw@%Is}?TS0-jaI>l@GUocve)-j?o17rOJp+U=h z4p@+6sZoXnXUW~G6Y=O;`3`bY)5RK1YM`_;%4lk++`ex8VU7hiDq%pZGuidom*N;# zLfF%lPqklQDdc`pyY>f6(5Mf?*Wzh?2bs<0G4Z>%;X}b(`?duG+m_(9)5pd%`<)s% zUI7)YdD;NA$Px&EAEe&M48@IAgL7P8`mB9#NOS;SDH{%Uc>QR7qTk82ioJ>WZpg!8 z22&5YS9pU5VtF^&NqL68~hpM+N zFRisu5*_tUclo+Yl2J#+u4mlDZL-Y`ZpP}rbSq1PjHZhu-YE7^JUxvQT+o|On68*B zNox~{Ute=jd}1Je!?%uO_C|Xs^%^TVYf1vG=HC%YWZ(ezm2_sZOAJQ11)lDOAEGP2 zE+Fx#pRiPJGa)=#2Au8)?uvw=SRRT&?j?_vq0Mt_)pwbNKY(Qs{@?hym+m zu1N1iL9sO3k70*bbJk2LbU4@26Q3=>t*RfOMTJ6j#`g8@){)m&pMGH1o;@$%)ijf~u3Q#ez6dY9z&S`XWrjubql=rDk$h z_RjBO?eNJ@U!E^Og-|zbhybu3S6IMBNBG!&(tS8a+H@B0c%MP7vzl@~O*M{EuMH+# z$P%6JJx67{4D{Eu4*OZ%W1tW0zRobxE%an`4F36Kiy!=>2+E;*sqkt>1m5U}lEaZn zu>|g{Kuh)hg^5TxFUdQO+C(?u1~iEHI=wnKd0t_=fE6T(fd_uqTogdTUOr zYRvRomjmRjuy0t*O1?8Z!j$MXiqar^d%hiOjU@Yi4>~0j4L}NuG<{rO!Q=K^QanZzB?|L#F`{STGr;@%#c&s!n*prF2@loj3Hjrht08CqA4Y6 z=Bp!B)vNAF!cytteL5w<_uQW{UwxSV_5(CU@S`L1DH#XX;Z=sy83w3t1A?8LQsv+C z3+p_5_2T9e5Xk;VrdQcNKiw>Fs+p*=O*?nSi=GLZEM`K0PqyP*T0K+~8twP!RcwVP z)r9}K%FOAj7*mTbY{Woa@S%`5xkZIw-Q!;K-)u)4o0JkaJ~s`Hx339QovsY=*5o~* z!bitYXn-22>kPUyiU1iVAwU5D7EV8uTB8ie*5U*kibwQ!Z4d`{TKcZsj2GS;>6z2E zkb(gD_J1md{q!M3bMc~raPbbxDmu!K&^%4jWQ<&H0|La0Fa9wshuxCh_2nwWH)7Zs z{2dL?z1qFIVgSvSY3}HC?E+!%a^!m%gxbism<;)VM2AV_0ztCEW!wsKs8!MqIdplo z-cug24Q&+*u{+l5;e)TsG@GTHs)xnSYWz)Lf*42Di(a@@3@b2V(nSZiV3N!`PQ1xG z9Yk#YYEjZ4`!HUC-61CeZP#G3p`i?g+EkqpJDV*Z3O4uoT zI#P5bAMKMLSH~^K5CWRV9?Z~6be4jAYStvO2kcTBV`%+k7&{+~ANDezspB!5N;>68 zO-7qYv{S#K6Pta@t^!L^CgU+_rU zG(f+h`h)s7&s7GycYKn~u&iGH!MpN7g6MA(jep^qbaEqA|Tr)+pX)4iV{k_^nmG|4{a%#OtZ{>FinB|?Z3$9+AB?^og z2-JlOsM>;wf7{!^5;BV*!}hlZV6N4IkZN72q7J4T5)Km+_qMMxxZnq*2J%kx~2DNRZ#zQHVBVUeRQI5N7+B*xOZ| zSU6!W1hZ9K*jzmcEPunm2WeD9O#bmdC{(0B+4n_!pMj`kulyJ>~}(Urr0#gF_1Z*bAWx z;jgR@C!Au$CY%!59$QK=v6%7pa<*((kW9VS<=AK3IeO-j)M8ZLsK<8R&6m<3e@)*` zv<7^jyTnz|^tI6fX6Qw}=f;{eNgdB;~19VyTP_!w{pyG4!` zMFE!hem){xGW$e^mQg3>#^5_ldCxz>gWXX!VA-^oNNWZ@3IMThQx@y*GTj|1)_*y$ z`$}HJkY$atFETo!hyK2#r`pY0v(|?DmPu=J3qcRivOgvBx{=1yO+!%@bcxN%8%8oa zj(NB*=LT9|>8A`|n(_?-#R+_Euuv}ypvGD1Jo$M$aAtVHAqrPAdW;7Jt$tiGt3>LH zphG(PkNUrpKIMouzPaUWJDxh*=z*V(BSt(+NWVb2lA>1^f*fN|HSIE2y3w^hOh4aW zQc%bn>m1&w^h6-=eWH~?+p4tjQ#=1T$3nY$r?z#)h3H`_=(lB(Z~VL<7`rY;&7t);yA zA)k^@_8)Bcf>9WJSD)1*{7X-RAKMEZ?%&W+wb~G=DMj#Lb*W6P(%=|!ZY#DExQ4Gq}@*f$d;U2yf^s)U5dqMG? zYu)(`m$dM3R$-BXz+6^Rwr}S;XGi5U_YixXv`ek;HjCIU`8jwtCVl!#TCqFT!>s{h z+jo(fN3KH3rCa^?s0RX$oZO?yM%xa6HPfX4nvB4ohkd>vzA`$5WZ<3EwXGFt_0cRt zZr}7|CXaxN8ZP%%eZNkTLq_^bzboIoPz?_;+0ZRXhfP>_b{H zbHqV2d&{m<7XHqT{d-vC8vhq2C`&@OWpluF$Kh#RJu~_3cfO2!3SU1GJZ{G8krUwu zh!O3+I;Hhd}w=}b;>B-v=}}dL5aqPu1*EGor-%? zu=Q1!yDMM&X);Qva-fB05)O{OuwCO^c84;X{{X`gIg-JSs(6D7bx`hYkI|iF_bHg+}(k-;w_#KK@Ue?xx>ELi=h-&4u6S z>>a&_QPI^sp`d#)2DtmlQgDqW9vDdI@+GCfJA1|P>n&iB3Ai;x`DtXI+XH$zIQe9p z$0xinP4BCj=9{C5gZ~|o?e#C%W#6AYx$gjQ-UKHtl1%I8vi*KX;`cZLdbCLj30#s6 zy!HFL-z7S-XK^Amup)Z@SkF~%?{VzyAD^x6{nrVaPeI0e7DwD;)&Q;be{ljnh5fa6 zT?|Y9b{r7Fe*?Yu3DCo6)Dz^((yR2R`zJ*9>gP2_(oOz9XYI6S(WUDqPJRDaDtrRJ z7{<*^LU{jJz-2*f&*Hr7U(`R{zny)67UJ7rhr@t4zVE0?&7Q@Nij20r``u4(VNhr_ zuDaK@Ot!aqmD|ZxkeaF>W?Z8dXq7E0rLp`&tnb!zs2;*;r=%+?(R6sapL(RmAeQw# zgEY;NUb;LX=pW&~0X$`(0;Z>fhf1rGRLPo}U+i$nJ>~6xdOFG6> zT}db^{^_kLRb(yE&mtkm; z#u@0e8LvELZMGSKDty4oY^=eL$C~(-Eca@ON8(5=n(_H)%JFmik|#_c;Et1c*(H|X z2c$B4(gjL=-Cc>^P+^z3R~+AALa-+}$3&r-MD37_e=jI|S=n>hWmffc7dZ*>)Y#hb z0U#L7$jK!pf&kBRv?>}Vt~%|5nlF()%8!`2B?D`!87tH#uq(PoiX_|10xIgLL>IYR2jj-2B0dM*v6i-Aak61|CBEuyy%m{kDqlMVHi#Vohk6ghZ!t84S@5IVM>|FW}U;2pl}3@q`8!s23u>x|9$|BZ7x cglS6|xCP*7gzHJy1Hel|4SXAU>+y^K1CiVOa{vGU literal 0 HcmV?d00001 diff --git a/RECOGNITION/top5-monthly-2013-07-25.png b/RECOGNITION/top5-monthly-2013-07-25.png new file mode 100644 index 0000000000000000000000000000000000000000..5a95ee0a459b9778363ea83c72c9112ec565076e GIT binary patch literal 80168 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 Zgl@~@>+%e-oL@V0Z7dwjYfZgg{4dUgzYqWb literal 0 HcmV?d00001 From 7dc0e08f7e839c9b6cb35384a4d9356ea35dea03 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 16:28:53 +0530 Subject: [PATCH 021/107] Add README to showcase a few screenshots only --- RECOGNITION/README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 RECOGNITION/README.md diff --git a/RECOGNITION/README.md b/RECOGNITION/README.md new file mode 100644 index 000000000..c6b3c1aec --- /dev/null +++ b/RECOGNITION/README.md @@ -0,0 +1,24 @@ +Recognition for Projects +========================= + +### Throughout July + +Ever since this repo was created, it has been in the top list on GH. Be it the daily or weekly list! + +Projects is the #5 most forked repo on GH done in Python language! + +![](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top-languages-python-2013-07-25.png) + +### July 25 2013 + +In the monthly top list on GH. + +![Showed up on top monthly list](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-monthly-2013-07-25.png) + +### July 14 2013 + +Just 10 days after the repo was created, it showed up in the top 5 on GH. + +![](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png) + +Check other screenshots in this repo for more GH explore page rankings following that day. \ No newline at end of file From 29ef0f59da253d8d6d04fdd46b466950e4aee1cf Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 19:33:14 +0530 Subject: [PATCH 022/107] Factorial done, README updated --- Numbers/factorial.py | 33 +++++++++++++++++++++++++++++++++ README.md | 8 ++++---- 2 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 Numbers/factorial.py diff --git a/Numbers/factorial.py b/Numbers/factorial.py new file mode 100644 index 000000000..b09d5e2f4 --- /dev/null +++ b/Numbers/factorial.py @@ -0,0 +1,33 @@ +""" +Factorial Finder - The Factorial of a positive integer, n, +is defined as the product of the sequence n, n-1, n-2, ...1 +and the factorial of zero, 0, is defined as being 1. Solve +this using both loops and recursion. +""" + +def fact_loop(n): + """ + Returns the factorial of a given positive, non-zero integer + using loops. + """ + fact = 1 + while n > 0: + fact *= n + n -= 1 + return fact + +def fact_recursion(n): + """ + Returns the factorial of a given positive, non-zero integer + using recursion. + """ + return 1 if n == 0 else n * fact_recursion(n - 1) # if user as ternary operator + +if __name__ == '__main__': + n = input('Enter a positive number: ') + + if n >= 0: + print 'Factorial of %d by loops is %d' % (n, fact_loop(n)) + print 'Factorial of %d by recursion is %d' % (n, fact_recursion(n)) + else: + print 'Not a valid number' diff --git a/README.md b/README.md index e6ff54517..cedfd03b5 100644 --- a/README.md +++ b/README.md @@ -3,13 +3,13 @@ Mega Project List #### [RECOGNITION](https://github.com/thekarangoel/Projects/tree/master/RECOGNITION) -This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. +Ever since this repo was created, it has been in the top list on GH. Be it the daily or weekly list! This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. In the last week of July, *Projects* was in the monthly top list on GH. -![July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png) +![July 25, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-monthly-2013-07-25.png) =============================== -### [CONTRIBUTING] (https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) +### [CONTRIBUTING](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. @@ -63,7 +63,7 @@ Numbers **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. -**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. +[**Factorial Finder**](https://github.com/thekarangoel/Projects/blob/master/Numbers/factorial.py) - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. **Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. From ad8e10229c67fdb01f334097ed94ed16d33c52c7 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 19:58:46 +0530 Subject: [PATCH 023/107] Added some complexity to Happy Numbers --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cedfd03b5..822833050 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ Numbers **Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. -**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. +**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Take an input number from user, and find first 8 happy numbers from that input. **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* From 3f96b6dbd606b9e9abab2c3a66cf07e982fa9cd7 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 26 Jul 2013 16:57:49 +0530 Subject: [PATCH 024/107] Better way of contributing solutions --- CONTRIBUTING.md | 59 +++---- README.md | 460 ++++++++++++++++++++++++------------------------ 2 files changed, 256 insertions(+), 263 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8af03cb26..0c35b80d2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,33 +1,26 @@ -How to Contribute -================== - -## Solutions - -Please **do not send pull requests for replacing my code**. If you'd like to contribute solutions, please see the following instructions: - -- Solve the problem, and keep it in your repo. DO NOT send merge request yet. - -- Find the problem in this [README](https://github.com/thekarangoel/Projects/blob/master/README.md) file. - -- Edit the file in this format (notice the double square brackets): - - \**This is a problem** - And here goes it's description. \[[octocat]]\(link-to-octocats-solution) \[[your_username]]\(link-to-your-solution) - - This results in something like this: - - **This is a problem** - And here goes it's description. [[octocat]](link-to-octocats-solution) [[your_username]](link-to-your-solution) - -- Please respect other people and do not delete or move anyone else's link. Place your solution at the end of the list of solutions. - -- Save/Commit the README.md file. -- Send a pull request for this commit ONLY! - -===================================== - -## Projects - -If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. - -It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md* and in *README.md* file in the relevant category folder. If you're copying a project from some other webpage, you **MUST** link to it in the *Sources* section at the bottom of repo's *README.md* and *README-scratch.md*. - -If you skip any step(s), I will not merge the changes! +How to Contribute +================== + +## Solutions + +Please **do not send pull requests for replacing my code**. If you'd like to contribute solutions, please see the following instructions: + +- Solve the problem, and keep it in your repo. DO NOT send merge request yet. + +- [Open an issue](https://github.com/thekarangoel/Projects/issues/new) with the following details - problem you solved, language used, and a link to the solution. + +- The link to your solution will be present in this [gist](https://gist.github.com/thekarangoel/6088143) like so: + + **This is a problem** - And here goes it's description. [[octocat (Python)]](link-to-octocats-solution) [[your_username(C++)]](link-to-your-solution) + +- That's it. As soon as I get online I'll add the link to the gist! You do not need to do anything else. + +===================================== + +## Projects + +If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. + +It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md* and in *README.md* file in the relevant category folder. If you're copying a project from some other webpage, you **MUST** link to it in the *Sources* section at the bottom of repo's *README.md* and *README-scratch.md*. + +If you skip any step(s), I will not merge the changes! diff --git a/README.md b/README.md index 822833050..13b208196 100644 --- a/README.md +++ b/README.md @@ -1,230 +1,230 @@ -Mega Project List -======== - -#### [RECOGNITION](https://github.com/thekarangoel/Projects/tree/master/RECOGNITION) - -Ever since this repo was created, it has been in the top list on GH. Be it the daily or weekly list! This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. In the last week of July, *Projects* was in the monthly top list on GH. - -![July 25, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-monthly-2013-07-25.png) - -=============================== - -### [CONTRIBUTING](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) - -See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. - -================================ - -Some details about this repo: - -* I will use Python to solve these. Why? Because I want to learn the language quickly. -* I have no interest in making games, so I'm excluding those from the list below. -* I'm not interested in networking, so I *might* skip all (or some) of them. -* The projects will not be made in the order posted. -* I may not be able to complete all of them. -* My method of solving them may not be the best. If you do not like my algorithm(s), please add a comment for the file/commit or open an issue, and I'll try to improve. - -I will link to each project that I complete. Some will be in this same repo, some bigger ones will have dedicated repos. - -To get started, fork this repo, delete this README and rename [*README-scratch.md*](https://github.com/thekarangoel/Projects/blob/master/README-scratch.md) to *README.md*. - -=============================== - -Numbers ---------- - -[**Find PI to the Nth Digit**](https://github.com/thekarangoel/Projects/blob/master/Numbers/pi.py) - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. - -[**Fibonacci Sequence**](https://github.com/thekarangoel/Projects/blob/master/Numbers/fibonacci.py) - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. - -[**Prime Factorization**](https://github.com/thekarangoel/Projects/blob/master/Numbers/prime.py) - Have the user enter a number and find all Prime Factors (if there are any) and display them. - -[**Next Prime Number**](https://github.com/thekarangoel/Projects/blob/master/Numbers/next_prime.py) - Have the program find prime numbers until the user chooses to stop asking for the next one. - -[**Find Cost of Tile to Cover W x H Floor**](https://github.com/thekarangoel/Projects/blob/master/Numbers/tile.py) - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. - -**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. - -[**Change Return Program**](https://github.com/thekarangoel/Projects/blob/master/Numbers/change.py) - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. - -[**Binary to Decimal and Back Converter**](https://github.com/thekarangoel/Projects/blob/master/Numbers/binary_decimal.py) - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. - -[**Calculator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/calc.py) - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. - -**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. - -[**Alarm Clock**](https://github.com/thekarangoel/Projects/blob/master/Numbers/alarm.py) - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. - -[**Distance Between Two Cities**](https://github.com/thekarangoel/Projects/blob/master/Numbers/distance.py) - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. - -[**Credit Card Validator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/credit_card_validator.py) - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). - -**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. - -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. - -[**Factorial Finder**](https://github.com/thekarangoel/Projects/blob/master/Numbers/factorial.py) - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. - -**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. - -**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Take an input number from user, and find first 8 happy numbers from that input. - -**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* - -Text ---------- - -[**Reverse a String**](https://github.com/thekarangoel/Projects/blob/master/Text/reverse.py) - Enter a string and the program will reverse it and print it out. - -[**Pig Latin**](https://github.com/thekarangoel/Projects/blob/master/Text/piglatin.py) - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. - -[**Count Vowels**](https://github.com/thekarangoel/Projects/blob/master/Text/count_vowels.py) - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. - -[**Check if Palindrome**](https://github.com/thekarangoel/Projects/blob/master/Text/palindrome.py) - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” - -[**Count Words in a String**](https://github.com/thekarangoel/Projects/blob/master/Text/count_words.py) - Counts the number of individual words in a string and display the top 5/10 most used words. - -**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* - -**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. - -**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* - -**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* - -**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* - -**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. - -**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. - -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* - -**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* - -**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. - -Networking ---------- - -**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. - -**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. - -**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. - -**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. - -**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* - -**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. - -**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. - -Classes ---------- - -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. - -**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. - -**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. - -**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. - -**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. - -**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. - -**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. - -**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. - -**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. - -Threading ---------- - -**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. - -**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. - -Web ---------- - -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* - -**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. - -**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* - -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. - -**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* - -**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. - -**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. - -**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* - -**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. - -**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. - -Files ---------- - -**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. - -**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. - -**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. - -**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* - -**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* - -**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. - -**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* - -Databases ---------- - -**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. - -**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. - -**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. - -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* - -**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* - -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. - -**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. - -**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. - -Graphics and Multimedia ---------- - -**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* - -**Stream Video from Online** - Try to create your own online streaming video player. - -**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. - -**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* - -**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* - -=============================================== - -Sources -======= - -[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -[Rosetta Code](http://rosettacode.org/) +Mega Project List +======== + +#### [RECOGNITION](https://github.com/thekarangoel/Projects/tree/master/RECOGNITION) + +Ever since this repo was created, it has been in the top list on GH. Be it the daily or weekly list! This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. In the last week of July, *Projects* was in the monthly top list on GH. + +![July 25, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-monthly-2013-07-25.png) + +=============================== + +### [CONTRIBUTING](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) + +See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions (will be published in this [gist](https://gist.github.com/thekarangoel/6088143)) to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. + +================================ + +Some details about this repo: + +* I will use Python to solve these. Why? Because I want to learn the language quickly. +* I have no interest in making games, so I'm excluding those from the list below. +* I'm not interested in networking, so I *might* skip all (or some) of them. +* The projects will not be made in the order posted. +* I may not be able to complete all of them. +* My method of solving them may not be the best. If you do not like my algorithm(s), please add a comment for the file/commit or open an issue, and I'll try to improve. + +I will link to each project that I complete. Some will be in this same repo, some bigger ones will have dedicated repos. + +To get started, fork this repo, delete this README and rename [*README-scratch.md*](https://github.com/thekarangoel/Projects/blob/master/README-scratch.md) to *README.md*. + +=============================== + +Numbers +--------- + +[**Find PI to the Nth Digit**](https://github.com/thekarangoel/Projects/blob/master/Numbers/pi.py) - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. + +[**Fibonacci Sequence**](https://github.com/thekarangoel/Projects/blob/master/Numbers/fibonacci.py) - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. + +[**Prime Factorization**](https://github.com/thekarangoel/Projects/blob/master/Numbers/prime.py) - Have the user enter a number and find all Prime Factors (if there are any) and display them. + +[**Next Prime Number**](https://github.com/thekarangoel/Projects/blob/master/Numbers/next_prime.py) - Have the program find prime numbers until the user chooses to stop asking for the next one. + +[**Find Cost of Tile to Cover W x H Floor**](https://github.com/thekarangoel/Projects/blob/master/Numbers/tile.py) - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. + +**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. + +[**Change Return Program**](https://github.com/thekarangoel/Projects/blob/master/Numbers/change.py) - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. + +[**Binary to Decimal and Back Converter**](https://github.com/thekarangoel/Projects/blob/master/Numbers/binary_decimal.py) - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. + +[**Calculator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/calc.py) - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. + +**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. + +[**Alarm Clock**](https://github.com/thekarangoel/Projects/blob/master/Numbers/alarm.py) - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. + +[**Distance Between Two Cities**](https://github.com/thekarangoel/Projects/blob/master/Numbers/distance.py) - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. + +[**Credit Card Validator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/credit_card_validator.py) - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). + +**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. + +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. + +[**Factorial Finder**](https://github.com/thekarangoel/Projects/blob/master/Numbers/factorial.py) - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. + +**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. + +**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Take an input number from user, and find first 8 happy numbers from that input. + +**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* + +Text +--------- + +[**Reverse a String**](https://github.com/thekarangoel/Projects/blob/master/Text/reverse.py) - Enter a string and the program will reverse it and print it out. + +[**Pig Latin**](https://github.com/thekarangoel/Projects/blob/master/Text/piglatin.py) - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. + +[**Count Vowels**](https://github.com/thekarangoel/Projects/blob/master/Text/count_vowels.py) - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. + +[**Check if Palindrome**](https://github.com/thekarangoel/Projects/blob/master/Text/palindrome.py) - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” + +[**Count Words in a String**](https://github.com/thekarangoel/Projects/blob/master/Text/count_words.py) - Counts the number of individual words in a string and display the top 5/10 most used words. + +**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* + +**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. + +**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* + +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* + +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* + +**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. + +**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. + +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* + +**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* + +**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. + +Networking +--------- + +**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. + +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. + +**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. + +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. + +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* + +**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. + +**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. + +Classes +--------- + +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. + +**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. + +**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. + +**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. + +**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. + +**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. + +**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. + +**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. + +**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. + +Threading +--------- + +**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. + +**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. + +Web +--------- + +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* + +**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. + +**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* + +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. + +**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* + +**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. + +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. + +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* + +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. + +**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. + +Files +--------- + +**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. + +**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. + +**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. + +**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* + +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* + +**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. + +**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* + +Databases +--------- + +**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. + +**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. + +**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. + +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* + +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* + +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. + +**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. + +**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. + +Graphics and Multimedia +--------- + +**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* + +**Stream Video from Online** - Try to create your own online streaming video player. + +**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. + +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* + +**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* + +=============================================== + +Sources +======= + +[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +[Rosetta Code](http://rosettacode.org/) From b9b6fd15504597e0d50b335b5bf1fe6cfbd02eb3 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 26 Jul 2013 17:03:40 +0530 Subject: [PATCH 025/107] Link to solutions gist --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 13b208196..f45c0f457 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,12 @@ See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/ ================================ +### [Solutions](https://gist.github.com/thekarangoel/6088143) + +You can find implementations of these projects in many other languages by other users in this [gist](https://gist.github.com/thekarangoel/6088143). + +================================ + Some details about this repo: * I will use Python to solve these. Why? Because I want to learn the language quickly. From 1f7ee1ebf158054816b1d542614b1c080750dd1a Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 26 Jul 2013 21:01:54 +0530 Subject: [PATCH 026/107] Happy Numbers done --- Numbers/happy_numbers.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Numbers/happy_numbers.py diff --git a/Numbers/happy_numbers.py b/Numbers/happy_numbers.py new file mode 100644 index 000000000..a50f05f92 --- /dev/null +++ b/Numbers/happy_numbers.py @@ -0,0 +1,40 @@ +""" +Happy Numbers - A happy number is defined by the +following process. Starting with any positive integer, +replace the number by the sum of the squares of its +digits, and repeat the process until the number equals +1 (where it will stay), or it loops endlessly in a +cycle which does not include 1. Those numbers for which +this process ends in 1 are happy numbers, while those +that do not end in 1 are unhappy numbers. Take an input +number from user, and find first 8 happy numbers from +that input. +""" + +NUMBERS_REQUIRED = 8 # number of happy numbers required + +def is_happy_number(num): + seen = [] + while True: + sum_digits = sum(int(digit) ** 2 for digit in str(num)) + if sum_digits == 1: + return True + elif sum_digits in seen: + return False + else: + num = sum_digits + seen.append(num) + +if __name__ == '__main__': + + happies = [] # list of happy numbers found + + num = input('Start at: ') + + while len(happies) != NUMBERS_REQUIRED: + if is_happy_number(num): + happies.append(num) + num += 1 + + print happies + From e5f0f90bb7e3636560db837e3b3ba7c15321eb66 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 26 Jul 2013 21:06:23 +0530 Subject: [PATCH 027/107] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f45c0f457..f7e38ba75 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ Numbers **Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. -**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Take an input number from user, and find first 8 happy numbers from that input. +[**Happy Numbers**](https://github.com/thekarangoel/Projects/blob/master/Numbers/happy_numbers.py) - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Take an input number from user, and find first 8 happy numbers from that input. **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* From dd7c04351092d07368a5e90ef07338ffb775d124 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 31 Jul 2013 18:30:25 +0530 Subject: [PATCH 028/107] Updated instructions for user --- Numbers/distance.py | 110 ++++++++++++++++++++++---------------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/Numbers/distance.py b/Numbers/distance.py index f0695eca0..65cfc9a9b 100644 --- a/Numbers/distance.py +++ b/Numbers/distance.py @@ -1,55 +1,55 @@ -#!/usr/bin/env python - -""" -Distance Between Two Cities - Calculates the distance between -two cities and allows the user to specify a unit of distance. -This program may require finding coordinates for the cities -like latitude and longitude. - -Uses the Haversine formula -(http://www.movable-type.co.uk/scripts/latlong.html) - -Dependencies: -geopy - pip install geopy -""" - -from geopy import geocoders # to find lat/lon for the city -import math - -R = 6373 # km - -city1 = raw_input('Enter city 1: ') -city2 = raw_input('Enter city 2: ') -unit = raw_input('Enter unit of distance (K = KM, M = MI): ').lower() - -if unit in 'km': - - g = geocoders.GoogleV3() - - try: - city1, (lat1, lon1) = g.geocode(city1) - city2, (lat2, lon2) = g.geocode(city2) - except: - raise Exception('Unable to locate the citites. Check the city names.') - - # convert decimal locations to radians - lat1 = math.radians(lat1) - lon1 = math.radians(lon1) - lat2 = math.radians(lat2) - lon2 = math.radians(lon2) - - # start haversne formula - dlon = lon2 - lon1 - dlat = lat2 - lat1 - a = (math.sin(dlat/2) ** 2) + math.cos(lat1) * math.cos(lat2) * \ - (math.sin(dlon/2) ** 2) - c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)) - d = R * c - - if unit == 'k': - print 'Distance between %s and %s is %.04f km' % (city1, city2, d) - else: - print 'Distance between %s and %s is %.04f mi' % (city1, city2, d / 1.60934) -else: - print 'Invalid unit input!' \ No newline at end of file +#!/usr/bin/env python + +""" +Distance Between Two Cities - Calculates the distance between +two cities and allows the user to specify a unit of distance. +This program may require finding coordinates for the cities +like latitude and longitude. + +Uses the Haversine formula +(http://www.movable-type.co.uk/scripts/latlong.html) + +Dependencies: +geopy + pip install geopy +""" + +from geopy import geocoders # to find lat/lon for the city +import math + +R = 6373 # km + +city1 = raw_input('Enter city 1: ') +city2 = raw_input('Enter city 2: ') +unit = raw_input('Enter unit of distance (Enter "K" for KM or "M" for MI): ').lower() + +if unit in 'km': + + g = geocoders.GoogleV3() + + try: + city1, (lat1, lon1) = g.geocode(city1) + city2, (lat2, lon2) = g.geocode(city2) + except: + raise Exception('Unable to locate the citites. Check the city names.') + + # convert decimal locations to radians + lat1 = math.radians(lat1) + lon1 = math.radians(lon1) + lat2 = math.radians(lat2) + lon2 = math.radians(lon2) + + # start haversne formula + dlon = lon2 - lon1 + dlat = lat2 - lat1 + a = (math.sin(dlat/2) ** 2) + math.cos(lat1) * math.cos(lat2) * \ + (math.sin(dlon/2) ** 2) + c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)) + d = R * c + + if unit == 'k': + print 'Distance between %s and %s is %.04f km' % (city1, city2, d) + else: + print 'Distance between %s and %s is %.04f mi' % (city1, city2, d / 1.60934) +else: + print 'Invalid unit input!' From 5f7c972d8bb5bbf100ff44c418f4ded41f72d90f Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 31 Jul 2013 18:42:17 +0530 Subject: [PATCH 029/107] change instructions for adding solutions --- CONTRIBUTING.md | 18 +++++++++++++----- README.md | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0c35b80d2..27e1269c0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,17 +3,25 @@ How to Contribute ## Solutions -Please **do not send pull requests for replacing my code**. If you'd like to contribute solutions, please see the following instructions: +Please **do not send pull requests for replacing my code**. If you'd like to contribute [solutions](https://github.com/thekarangoel/Projects-Solutions), please see the following instructions: - Solve the problem, and keep it in your repo. DO NOT send merge request yet. -- [Open an issue](https://github.com/thekarangoel/Projects/issues/new) with the following details - problem you solved, language used, and a link to the solution. +- Find the problem in this [README](https://github.com/thekarangoel/Projects-Solutions/blob/master/README.md) file. -- The link to your solution will be present in this [gist](https://gist.github.com/thekarangoel/6088143) like so: +- Edit the file in this format (notice the double square brackets): + + \**This is a problem** - And here goes it's description. \[[octocat (language)]]\(link-to-octocats-solution) \[[your_username (C++)]]\(link-to-your-solution) + + This results in something like this: - **This is a problem** - And here goes it's description. [[octocat (Python)]](link-to-octocats-solution) [[your_username(C++)]](link-to-your-solution) + **This is a problem** - And here goes it's description. [[octocat (language)]](link-to-octocats-solution) [[your_username (C++)]](link-to-your-solution) + +- Please respect other people and do not delete or move anyone else's link. Place your solution at the end of the list of solutions. + +- Save/Commit the README.md file. -- That's it. As soon as I get online I'll add the link to the gist! You do not need to do anything else. +- Send a pull request for this commit ONLY - ie, the commit to the [solutions repo](https://github.com/thekarangoel/Projects-Solutions)! ===================================== diff --git a/README.md b/README.md index f7e38ba75..8216cd3be 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Ever since this repo was created, it has been in the top list on GH. Be it the d ### [CONTRIBUTING](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) -See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions (will be published in this [gist](https://gist.github.com/thekarangoel/6088143)) to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. +See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions (will be published in this [repo]([solutions](https://github.com/thekarangoel/Projects-Solutions))) to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. ================================ From 5630ae985395a3cdb36800fe0a4a4a2ba9266e61 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 31 Jul 2013 18:53:27 +0530 Subject: [PATCH 030/107] Link to solutions repo --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8216cd3be..81f2546ca 100644 --- a/README.md +++ b/README.md @@ -11,13 +11,13 @@ Ever since this repo was created, it has been in the top list on GH. Be it the d ### [CONTRIBUTING](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) -See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions (will be published in this [repo]([solutions](https://github.com/thekarangoel/Projects-Solutions))) to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. +See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions (will be published in this [repo](https://github.com/thekarangoel/Projects-Solutions)) to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. ================================ -### [Solutions](https://gist.github.com/thekarangoel/6088143) +### [Solutions](https://github.com/thekarangoel/Projects-Solutions) -You can find implementations of these projects in many other languages by other users in this [gist](https://gist.github.com/thekarangoel/6088143). +You can find implementations of these projects in many other languages by other users in this [repo](https://github.com/thekarangoel/Projects-Solutions). ================================ From 1158f9780951571cfad80d2dd787bb9a3caa52a5 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 2 Aug 2013 10:32:29 +0530 Subject: [PATCH 031/107] Print all primes, thanks madsulrik https://github.com/thekarangoel/Projects/pull/20 --- Numbers/prime.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Numbers/prime.py b/Numbers/prime.py index f711f0803..45cbe1390 100644 --- a/Numbers/prime.py +++ b/Numbers/prime.py @@ -17,7 +17,7 @@ def is_a_prime(x): factors = [] for i in range(2, n + 1): - if n % i == 0: + while n % i == 0: # Thanks @madsulrik if is_a_prime(i): factors.append(i) n /= i From 6dcc51b7c9c8e9f7154b86c6f7c4b96c2e6f6c18 Mon Sep 17 00:00:00 2001 From: Brian Jones Date: Sun, 4 Aug 2013 14:24:54 +1000 Subject: [PATCH 032/107] Added Graph Section Moved Dykstras algorithm into new section for graphs, and added some projects related to graphs --- Graphs/README copy.md | 10 ++++++++++ README-scratch.md | 14 ++++++++++++-- README.md | 13 +++++++++++-- 3 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 Graphs/README copy.md diff --git a/Graphs/README copy.md b/Graphs/README copy.md new file mode 100644 index 000000000..7d23fcf77 --- /dev/null +++ b/Graphs/README copy.md @@ -0,0 +1,10 @@ +Graphs +------ + +**Graph from links** - Create a program that will create a graph or network from a series of links. + +**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. + +**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not. + +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. \ No newline at end of file diff --git a/README-scratch.md b/README-scratch.md index 340dbd411..62b4d1454 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -32,8 +32,6 @@ Numbers **Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. - **Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. **Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. @@ -42,6 +40,18 @@ Numbers **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* +Graph +-------- +**Graph from links** - Create a program that will create a graph or network from a series of links. + +**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. + +**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not. + +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. + + + Text --------- diff --git a/README.md b/README.md index 81f2546ca..b8e86eec5 100644 --- a/README.md +++ b/README.md @@ -67,8 +67,6 @@ Numbers **Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. - [**Factorial Finder**](https://github.com/thekarangoel/Projects/blob/master/Numbers/factorial.py) - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. **Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. @@ -77,6 +75,17 @@ Numbers **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* +Graphs +--------- + +**Graph from links** - Create a program that will create a graph or network from a series of links. + +**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. + +**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not. + +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. + Text --------- From d05d069f5c7bad693258f3d1c6279a5184ecaa27 Mon Sep 17 00:00:00 2001 From: Brian Jones Date: Sun, 4 Aug 2013 18:00:25 +1000 Subject: [PATCH 033/107] Rename README copy.md to README.md Just a rename. --- Graphs/{README copy.md => README.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Graphs/{README copy.md => README.md} (93%) diff --git a/Graphs/README copy.md b/Graphs/README.md similarity index 93% rename from Graphs/README copy.md rename to Graphs/README.md index 7d23fcf77..759d41453 100644 --- a/Graphs/README copy.md +++ b/Graphs/README.md @@ -7,4 +7,4 @@ Graphs **Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not. -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. \ No newline at end of file +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. From c070bec1be94ff083ccdf5f08e3c679414a87e0c Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sun, 4 Aug 2013 15:10:13 +0530 Subject: [PATCH 034/107] Add repo description --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b8e86eec5..5e0df3ab6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ Mega Project List ======== +A list of practical projects that anyone can solve in any programming language (See [solutions](https://github.com/thekarangoel/Projects-Solutions)). These projects are divided in multiple categories, and each category has it's own folder. + #### [RECOGNITION](https://github.com/thekarangoel/Projects/tree/master/RECOGNITION) Ever since this repo was created, it has been in the top list on GH. Be it the daily or weekly list! This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. In the last week of July, *Projects* was in the monthly top list on GH. From 89232dde909af61a909b9bbe313b5b68c601a802 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sun, 4 Aug 2013 15:11:28 +0530 Subject: [PATCH 035/107] add Rosetta Code as source --- README-scratch.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README-scratch.md b/README-scratch.md index 62b4d1454..1c109d658 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -207,4 +207,5 @@ Graphics and Multimedia Sources ======= -[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) \ No newline at end of file +[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +[Rosetta Code](http://rosettacode.org/) From ec2ab659ffc5510441275b66adec31516d592e14 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 6 Aug 2013 10:30:36 +0530 Subject: [PATCH 036/107] Also reflect changes in Solutions readme --- CONTRIBUTING.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 27e1269c0..3ef7abc7e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,6 +29,8 @@ Please **do not send pull requests for replacing my code**. If you'd like to con If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. -It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md* and in *README.md* file in the relevant category folder. If you're copying a project from some other webpage, you **MUST** link to it in the *Sources* section at the bottom of repo's *README.md* and *README-scratch.md*. +It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md*, in *README.md* file in the *relevant category folder* andin the [Solutions README file](https://github.com/thekarangoel/Projects-Solutions/blob/master/README.md) + +If you're copying a project from some other webpage, you **MUST** link to it in the *Sources* section at the bottom of repo's *README.md* and *README-scratch.md*. If you skip any step(s), I will not merge the changes! From 2afd8c1fc68bea745c922f83bbaa8a253fb2b656 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 6 Aug 2013 10:31:28 +0530 Subject: [PATCH 037/107] Update emphasis --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3ef7abc7e..153e83ed4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,7 +29,7 @@ Please **do not send pull requests for replacing my code**. If you'd like to con If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. -It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md*, in *README.md* file in the *relevant category folder* andin the [Solutions README file](https://github.com/thekarangoel/Projects-Solutions/blob/master/README.md) +It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md*, in *README.md* file in the relevant category folder, and in the [Solutions *README.md* file](https://github.com/thekarangoel/Projects-Solutions/blob/master/README.md) If you're copying a project from some other webpage, you **MUST** link to it in the *Sources* section at the bottom of repo's *README.md* and *README-scratch.md*. From 0b7f69246b42e3b2e44d65c5cefb62be36e707e5 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 8 Aug 2013 15:18:37 +0530 Subject: [PATCH 038/107] More pythonic way of creating dict --- Text/count_vowels.py | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/Text/count_vowels.py b/Text/count_vowels.py index 847764885..6d03137e9 100644 --- a/Text/count_vowels.py +++ b/Text/count_vowels.py @@ -1,17 +1,18 @@ -""" -Count Vowels - Enter a string and the program counts -the number of vowels in the text. For added complexity -have it report a sum of each vowel found. -""" - -string = raw_input('Enter a string: ').lower() - -vowels = ['a', 'e', 'i', 'o', 'u'] -counts = dict(zip(vowels, [0, 0, 0, 0, 0])) - -for vowel in counts: - for char in string: - if vowel == char: - counts[vowel] += 1 - -print counts +""" +Count Vowels - Enter a string and the program counts +the number of vowels in the text. For added complexity +have it report a sum of each vowel found. +""" + +if __name__ == '__main__': + string = raw_input('Enter a string: ').lower() + + vowels = ['a', 'e', 'i', 'o', 'u'] + counts = dict(zip(vowels, [0]*5)) + + for vowel in counts: + for char in string: + if vowel == char: + counts[vowel] += 1 + + print counts From ec82582359223c1e8b73a182ff4a0a576729b811 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 8 Aug 2013 16:20:54 +0530 Subject: [PATCH 039/107] Web scraper done --- Web/page_scraper.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Web/page_scraper.py diff --git a/Web/page_scraper.py b/Web/page_scraper.py new file mode 100644 index 000000000..ccfd191fa --- /dev/null +++ b/Web/page_scraper.py @@ -0,0 +1,33 @@ +# -*- coding: cp1252 -*- +""" +Page Scraper - Create an application which connects to a +site and pulls out all links, or images, and saves them to +a list. Optional: Organize the indexed content and don�t +allow duplicates. Have it put the results into an easily +searchable index file. +""" + +import urllib2 +from bs4 import BeautifulSoup + + +def print_list(stuff): + print '\n'.join(stuff) + print '\n====================\n' + +if __name__ == '__main__': + + url = raw_input('Enter a URL: ') + + choice = input('What to scrape?\n1. Links\n2. Images\n3. Both\n') + + soup = BeautifulSoup(urllib2.urlopen(url).read()) + + if choice == 1 or choice == 3: + urls = [link.get('href') for link in soup.findAll('a')] + print 'URLs:' + print_list(urls) + if choice == 2 or choice ==3: + images = [image['src'] for image in soup.findAll("img")] + print 'Images:' + print_list(images) From b1f704f326d880ff62107d63a0be67adb945f9b7 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 8 Aug 2013 16:22:07 +0530 Subject: [PATCH 040/107] Solution to web scraper --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5e0df3ab6..15b981e1d 100644 --- a/README.md +++ b/README.md @@ -169,7 +169,7 @@ Threading Web --------- -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* +[**Page Scraper**](https://github.com/thekarangoel/Projects/blob/master/Web/page_scraper.py) - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* **Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. From 5a42677d85a056c716bdd2bc58630b5de9a649ad Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 9 Aug 2013 12:40:39 +0530 Subject: [PATCH 041/107] Product class added. --- Classes/product_inventory.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Classes/product_inventory.py diff --git a/Classes/product_inventory.py b/Classes/product_inventory.py new file mode 100644 index 000000000..c04d13198 --- /dev/null +++ b/Classes/product_inventory.py @@ -0,0 +1,27 @@ +""" +Product Inventory Project - Create an application which manages +an inventory of products. Create a product class which has a +price, id, and quantity on hand. Then create an inventory class +which keeps track of various products and can sum up the inventory +value. +""" + +class Product: + + def __init__(self, price, pid, qty): + """ + Class constructor that needs a price, a product id, + and quantity. + """ + self.price = price + self.pid = pid + self.qty = qty + + def print_product(self): + """ + Prints a single product. + """ + print '%d\t%s\t%.02f each' % (self.pid, self.qty, self.price) + +p = Product(1.4, 123, 5) +p.print_product() From 0c50521dd60eb36f8c0596defef58c77729c1651 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 9 Aug 2013 12:57:08 +0530 Subject: [PATCH 042/107] Inventory class added. --- Classes/product_inventory.py | 38 ++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/Classes/product_inventory.py b/Classes/product_inventory.py index c04d13198..e3837ab9a 100644 --- a/Classes/product_inventory.py +++ b/Classes/product_inventory.py @@ -23,5 +23,39 @@ def print_product(self): """ print '%d\t%s\t%.02f each' % (self.pid, self.qty, self.price) -p = Product(1.4, 123, 5) -p.print_product() +class Inventory: + + def __init__(self): + """ + Initializes the class instance. + """ + self.products = [] # list to hold all products + + def add(self, product): + """ + Adds a passed Product to the list of products. + """ + self.products.append(product) + + def print_inventory(self): + """ + Prints the current inventory, and the total value + of products. + """ + value = 0 + for product in self.products: + print '%d\t%s\t%.02f each' % (product.pid, product.qty, product.price) + value += (product.price * product.qty) + print '\nTotal value: %.02f' % value + +if __name__ == '__main__': + p1 = Product(1.4, 123, 5) + p2 = Product(1, 3432, 100) + p3 = Product(100.4, 2342, 99) + + + i = Inventory() + i.add(p1) + i.add(p2) + i.add(p3) + i.print_inventory() From 317e3e3b264fb9b50a77068c4b2050c0d0dd043e Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 9 Aug 2013 14:02:28 +0530 Subject: [PATCH 043/107] Add solution to product inventory --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 15b981e1d..fefc3ff58 100644 --- a/README.md +++ b/README.md @@ -141,7 +141,7 @@ Networking Classes --------- -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. +[**Product Inventory Project**](https://github.com/thekarangoel/Projects/blob/master/Classes/product_inventory.py) - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. **Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. From 8f5384b8f0aa39bc316d920d7a72516f8aa175ee Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 9 Aug 2013 14:04:27 +0530 Subject: [PATCH 044/107] Update quantity method added --- Classes/product_inventory.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Classes/product_inventory.py b/Classes/product_inventory.py index e3837ab9a..e337a7d5e 100644 --- a/Classes/product_inventory.py +++ b/Classes/product_inventory.py @@ -17,6 +17,17 @@ def __init__(self, price, pid, qty): self.pid = pid self.qty = qty + def update_qty(self, qty, method='add'): + """ + Updates the quantity of produts. By default, adds the + passed quantity. Pass method as 'subtract' to subtract + the quantity. + """ + if method == 'add': + self.qty += qty + elif method == 'subtract': + self.qty = max(0, self.qty - qty) + def print_product(self): """ Prints a single product. @@ -59,3 +70,9 @@ def print_inventory(self): i.add(p2) i.add(p3) i.print_inventory() + + p1.update_qty(10) + i.print_inventory() + + p1.update_qty(10, method='subtract') + i.print_inventory() From 423927fe429dbe59b4724b409b1a4e6600fdf16d Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sun, 11 Aug 2013 13:40:42 +0530 Subject: [PATCH 045/107] More idiomatic code, use defaultdict --- Text/count_vowels.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Text/count_vowels.py b/Text/count_vowels.py index 6d03137e9..fe55626f1 100644 --- a/Text/count_vowels.py +++ b/Text/count_vowels.py @@ -4,15 +4,16 @@ have it report a sum of each vowel found. """ +from collections import defaultdict + if __name__ == '__main__': string = raw_input('Enter a string: ').lower() vowels = ['a', 'e', 'i', 'o', 'u'] - counts = dict(zip(vowels, [0]*5)) + counts = defaultdict(int) - for vowel in counts: - for char in string: - if vowel == char: - counts[vowel] += 1 + for char in string: + if char in vowels: + counts[char] += 1 - print counts + print counts.items() From 0754e74aebe035652c98b91033018b2782d35c88 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 14 Aug 2013 17:42:53 +0530 Subject: [PATCH 046/107] Safer way of user input --- Numbers/calc.py | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/Numbers/calc.py b/Numbers/calc.py index 9daf8371e..0e477cf7f 100644 --- a/Numbers/calc.py +++ b/Numbers/calc.py @@ -1,22 +1,24 @@ -# -*- coding: cp1252 -*- -""" -Calculator - A simple calculator to do basic operators. -""" - -if __name__ == '__main__': - num1 = input("Number 1: ") - num2 = input("Number 2: ") - op = raw_input("Operation (+, -, /, *): ") - - if op not in '+-/*': - print "Invalid operator" - else: - if op == '+': - res = num1 + num2 - elif op == '-': - res = num1 - num2 - elif op == '/': - res = num1 / num2 - elif op == '*': - res = num1 * num2 - print "%d %s %d = %d" % (num1, op, num2, res) +""" +Calculator - A simple calculator to do basic operators. +""" + +if __name__ == '__main__': + try: + num1 = int(raw_input("Number 1: ")) + num2 = int(raw_input("Number 2: ")) + except: + print 'Invalid input' + else: + op = raw_input("Operation (+, -, /, *): ") + if op not in '+-/*': + print "Invalid operator" + else: + if op == '+': + res = num1 + num2 + elif op == '-': + res = num1 - num2 + elif op == '/': + res = num1 / num2 + elif op == '*': + res = num1 * num2 + print "%d %s %d = %d" % (num1, op, num2, res) From 0f894d0ac9ca9bed4c15de56a627375a9fb951ae Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 14 Aug 2013 17:44:20 +0530 Subject: [PATCH 047/107] Use eval() for calc --- Numbers/calc.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/Numbers/calc.py b/Numbers/calc.py index 0e477cf7f..e6ea5f7f2 100644 --- a/Numbers/calc.py +++ b/Numbers/calc.py @@ -13,12 +13,5 @@ if op not in '+-/*': print "Invalid operator" else: - if op == '+': - res = num1 + num2 - elif op == '-': - res = num1 - num2 - elif op == '/': - res = num1 / num2 - elif op == '*': - res = num1 * num2 - print "%d %s %d = %d" % (num1, op, num2, res) + print "%d %s %d = %d" % \ + (num1, op, num2, eval(str(num1) + op + str(num2))) From 3ace15daa0bf59fa3f4d46fec238c35263aa0f53 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 15 Aug 2013 21:33:32 +0530 Subject: [PATCH 048/107] Add classic algorithms --- Classic Algorithms/README.md | 4 ++++ README-scratch.md | 5 +++++ README.md | 5 +++++ 3 files changed, 14 insertions(+) create mode 100644 Classic Algorithms/README.md diff --git a/Classic Algorithms/README.md b/Classic Algorithms/README.md new file mode 100644 index 000000000..e4ab0afbc --- /dev/null +++ b/Classic Algorithms/README.md @@ -0,0 +1,4 @@ +Classic Algorithms +----------------- + +**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. \ No newline at end of file diff --git a/README-scratch.md b/README-scratch.md index 1c109d658..224bc73ae 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -40,6 +40,11 @@ Numbers **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* +Classic Algorithms +----------------- + +**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. + Graph -------- **Graph from links** - Create a program that will create a graph or network from a series of links. diff --git a/README.md b/README.md index fefc3ff58..f0e940b14 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,11 @@ Numbers **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* +Classic Algorithms +----------------- + +**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. + Graphs --------- From a4c8f97cf84aabafeeccdb6a12a7a09466d63a91 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 23 Aug 2013 17:25:12 +0530 Subject: [PATCH 049/107] Add donation link --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index f0e940b14..0531ea65b 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,12 @@ You can find implementations of these projects in many other languages by other ================================ +### [Donate](https://www.gittip.com/Karan%20Goel/) + +If you love and use *Projects*, please consider [donating via gittip](https://www.gittip.com/Karan%20Goel/). Any support is appreciated! + +================================ + Some details about this repo: * I will use Python to solve these. Why? Because I want to learn the language quickly. From 8df1b31bb79c96ffdb988ac28f447dc77e7fd597 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Mon, 26 Aug 2013 19:43:30 +0530 Subject: [PATCH 050/107] Collatz Conjecture done --- Classic Algorithms/collatz.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Classic Algorithms/collatz.py diff --git a/Classic Algorithms/collatz.py b/Classic Algorithms/collatz.py new file mode 100644 index 000000000..3881ea11e --- /dev/null +++ b/Classic Algorithms/collatz.py @@ -0,0 +1,29 @@ +""" +Collatz Conjecture - Start with a number n > 1. +Find the number of steps it takes to reach one using +the following process: If n is even, divide it by 2. +If n is odd, multiply it by 3 and add 1. +""" + +def main(): + try: + n = int(raw_input('Enter a number: ')) + except ValueError: + print 'Enter only an integer value, n > 1.' + + steps = 0 + + print '\n%d' % n, + + while n > 1: + if n % 2 == 0: + n /= 2 + else: + n = (n * 3) + 1 + steps += 1 + print ' -> %d' % n, + + print '\n\n%d steps take to reach ONE.' % steps + +if __name__ == '__main__': + main() From 15cdb74c7d7e96a79442aaee1e5bdeba06a0da12 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Mon, 26 Aug 2013 19:45:13 +0530 Subject: [PATCH 051/107] Link to Collatz Conjecture --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0531ea65b..de0a39ed3 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ Numbers Classic Algorithms ----------------- -**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. +[**Collatz Conjecture**](https://github.com/thekarangoel/Projects/blob/master/Classic%20Algorithms/collatz.py) - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. Graphs --------- From 0878c3d12a7d7d4f63a7028c1fb2500ff9c9ec26 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Mon, 26 Aug 2013 19:55:39 +0530 Subject: [PATCH 052/107] Rss feed creator done --- Text/rss.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Text/rss.py diff --git a/Text/rss.py b/Text/rss.py new file mode 100644 index 000000000..25f8c8f1d --- /dev/null +++ b/Text/rss.py @@ -0,0 +1,29 @@ +""" +RSS Feed Creator - Given a link to RSS/Atom Feed, +get all posts and display them. +""" + +import re +import urllib2 + + +def main(): + """ + Takes in a Feedburned feed URL. + + Eg: http://feeds.feedburner.com/WebDesignLedger + """ + feed_url = raw_input('Enter Feedburner RSS URL: ') + content = urllib2.urlopen(feed_url).read() # get the source code of feed + + link_pattern = re.compile('(.*)') + title_pattern = re.compile('(.*)') + + links = re.findall(link_pattern, content)[1:] # skip blog url + titles = re.findall(title_pattern, content)[1:] # skip the page title + + for (link, title) in zip(links, titles): + print '{0}\n{1}\n'.format(title, link) + +if __name__ == '__main__': + main() From 33b18b8ab8992e17d6cfac4c0d609f4b12036de1 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Mon, 26 Aug 2013 19:57:26 +0530 Subject: [PATCH 053/107] Link to RSS feed creator --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index de0a39ed3..64869bb5f 100644 --- a/README.md +++ b/README.md @@ -114,7 +114,7 @@ Text **Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* -**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. +[**RSS Feed Creator**](https://github.com/thekarangoel/Projects/blob/master/Text/rss.py) - Given a link to RSS/Atom Feed, get all posts and display them. **Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* From f1ba3f0486e7d81ddffe750c43f0c5cf4e66446f Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Mon, 26 Aug 2013 22:00:46 +0530 Subject: [PATCH 054/107] Unit converter done --- Numbers/unit.py | 91 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 Numbers/unit.py diff --git a/Numbers/unit.py b/Numbers/unit.py new file mode 100644 index 000000000..383044e99 --- /dev/null +++ b/Numbers/unit.py @@ -0,0 +1,91 @@ +""" +Unit Converter (temp, currency, volume, mass and more) - Converts +various units between one another. The user enters the type of unit +being entered, the type of unit they want to convert to and then +the value. The program will then make the conversion. +""" + +from __future__ import division +from urllib2 import urlopen +import json + +# 1 (std unit) = these many units +MULTIPLIERS_TO_STD = { + 'length': { + 'cm': 0.01, + 'm': 1, # std unit + 'km': 1000, + 'mi': 1609.34, + 'ft': 0.3048 + }, + 'temp': { + 'C': 1, # std unit + 'F': 33.8 + } +} + +# These many units = 1 (std unit) +MULTIPLIERS_FROM_STD = { + 'length': { + 'cm': 100, + 'm': 1, # std unit + 'km': 0.001, + 'mi': 0.000621371, + 'ft': 3.28084 + }, + 'temp': { + 'C': 1, # std unit + 'F': -17.2222 + } +} + + +def get_user_input(choice): + units = ', '.join(MULTIPLIERS_TO_STD[choice].keys()) + source_unit = raw_input('\nEnter source unit (%s): ' % units) + source_val = float(raw_input('How many %s\'s? ' % source_unit)) + convert_to = raw_input('Convert to? (%s): ' % units) + return source_unit, source_val, convert_to + +def get_currency(source_unit, source_val, convert_to): + url = 'http://rate-exchange.appspot.com/currency?from=%s&to=%s&q=%s' % ( + source_unit, convert_to, str(source_val)) + content = urlopen(url).read() + return json.loads(content)['v'] + +def main(): + print """Unit Converter + 1. Length + 2. Temperature + 3. Currency""" + + choice = int(raw_input('What do you want to convert: ')) + + if choice == 1: + source_unit, source_val, convert_to = get_user_input('length') + print '%f%s = %f%s' % (source_val, source_unit, + source_val * \ + MULTIPLIERS_TO_STD['length'][source_unit] * \ + MULTIPLIERS_FROM_STD['length'][convert_to], \ + convert_to) + elif choice == 2: + source_unit, source_val, convert_to = get_user_input('temp') + if (source_unit, convert_to) == ('F', 'C'): # F -> C + value = (source_val - 32) * (5/9) + elif (source_unit, convert_to) == ('C', 'F'): # C -> F + value = (source_val * (9/5)) + 32 + else: + value = source_val + print '%f%s = %f%s' % (source_val, source_unit, + value, convert_to) + + elif choice == 3: + source_unit = raw_input('\nEnter source currency (eg USD, INR etc): ') + source_val = float(raw_input('How many %s\'s? ' % source_unit)) + convert_to = raw_input('Convert to? (eg USD, INR etc): ') + print '%f%s = %f%s' % (source_val, source_unit, + get_currency(source_unit, source_val, convert_to), + convert_to) + +if __name__ == '__main__': + main() From b7888bbdcf288fad3f7af53332de9eb518c3201f Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Mon, 26 Aug 2013 22:03:50 +0530 Subject: [PATCH 055/107] Link to unit converter --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 64869bb5f..f901e150d 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ Numbers [**Calculator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/calc.py) - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. -**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. +[**Unit Converter (temp, currency, volume, mass and more)**](https://github.com/thekarangoel/Projects/blob/master/Numbers/unit.py) - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. [**Alarm Clock**](https://github.com/thekarangoel/Projects/blob/master/Numbers/alarm.py) - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. From 2804712a0a06c7cbcaf6614b28b61b854968efbb Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 27 Aug 2013 14:28:52 +0530 Subject: [PATCH 056/107] Add some classic algo problems --- Classic Algorithms/README.md | 8 +++++++- README-scratch.md | 8 +++++++- README.md | 6 ++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Classic Algorithms/README.md b/Classic Algorithms/README.md index e4ab0afbc..bd88e10d6 100644 --- a/Classic Algorithms/README.md +++ b/Classic Algorithms/README.md @@ -1,4 +1,10 @@ Classic Algorithms ----------------- -**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. \ No newline at end of file +**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. + +**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort. + +**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. + +**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). diff --git a/README-scratch.md b/README-scratch.md index 224bc73ae..7d5c026b1 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -44,7 +44,13 @@ Classic Algorithms ----------------- **Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. - + +**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort. + +**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. + +**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). + Graph -------- **Graph from links** - Create a program that will create a graph or network from a series of links. diff --git a/README.md b/README.md index f901e150d..67514b593 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,12 @@ Classic Algorithms [**Collatz Conjecture**](https://github.com/thekarangoel/Projects/blob/master/Classic%20Algorithms/collatz.py) - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. +**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort. + +**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. + +**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). + Graphs --------- From 4a662c09fd39889a16dcb372bbe0761b67a6fbee Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 27 Aug 2013 15:09:49 +0530 Subject: [PATCH 057/107] Atomic time done --- Web/time.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Web/time.py diff --git a/Web/time.py b/Web/time.py new file mode 100644 index 000000000..073d75f47 --- /dev/null +++ b/Web/time.py @@ -0,0 +1,25 @@ +""" +Get Atomic Time from Internet Clock - This program will get +the true atomic time from an atomic time clock on the Internet. +Use any one of the atomic clocks returned by a simple Google search. +""" + +import re +from urllib2 import urlopen + + +def main(): + url = 'http://time.is/just' + content = urlopen(url).read() + pattern = re.compile('

') + + find_match = re.search(pattern, content) + + location_pat = re.compile('

(.*)

') + location_match = re.search(location_pat, content) + + print 'The time in %s is %s %s' % \ + (location_match.group(1), find_match.group(1), find_match.group(2)) + +if __name__ == '__main__': + main() From fbe8831c6e663cd748cecb285462dbe46d72e85f Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 27 Aug 2013 15:12:03 +0530 Subject: [PATCH 058/107] link to atomic time --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 67514b593..d43575493 100644 --- a/README.md +++ b/README.md @@ -192,7 +192,7 @@ Web **Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. +[**Get Atomic Time from Internet Clock**](https://github.com/thekarangoel/Projects/blob/master/Web/time.py) - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. **Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* From 9ebddd86404612e990682f5b717af6cf2d9ab61b Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 29 Aug 2013 19:58:31 +0530 Subject: [PATCH 059/107] Add security, classic algos update --- Classic Algorithms/README.md | 2 ++ README-scratch.md | 11 +++++++++-- README.md | 11 +++++++++-- Security/README.md | 4 ++++ 4 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 Security/README.md diff --git a/Classic Algorithms/README.md b/Classic Algorithms/README.md index bd88e10d6..9d15e2322 100644 --- a/Classic Algorithms/README.md +++ b/Classic Algorithms/README.md @@ -8,3 +8,5 @@ Classic Algorithms **Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. **Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). + +**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. \ No newline at end of file diff --git a/README-scratch.md b/README-scratch.md index 7d5c026b1..a81eb6329 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -51,6 +51,8 @@ Classic Algorithms **Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). +**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. + Graph -------- **Graph from links** - Create a program that will create a graph or network from a series of links. @@ -213,10 +215,15 @@ Graphics and Multimedia **Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* +Security +------------- + +**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. + =============================================== Sources ======= -[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -[Rosetta Code](http://rosettacode.org/) +* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +* [Rosetta Code](http://rosettacode.org/) \ No newline at end of file diff --git a/README.md b/README.md index d43575493..3113e8a52 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,8 @@ Graphs **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. +**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. + Text --------- @@ -255,10 +257,15 @@ Graphics and Multimedia **Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* +Security +------------- + +**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. + =============================================== Sources ======= -[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -[Rosetta Code](http://rosettacode.org/) +* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +* [Rosetta Code](http://rosettacode.org/) \ No newline at end of file diff --git a/Security/README.md b/Security/README.md new file mode 100644 index 000000000..a654b76c7 --- /dev/null +++ b/Security/README.md @@ -0,0 +1,4 @@ +Security +------------- + +**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. \ No newline at end of file From 65c87e0313214c5e84f41e48dc71139b7776ee6e Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 30 Aug 2013 20:01:11 +0530 Subject: [PATCH 060/107] Some minor updates --- Classes/product_inventory.py | 4 +- Numbers/change.py | 82 +++++++++++++++++------------------- 2 files changed, 42 insertions(+), 44 deletions(-) diff --git a/Classes/product_inventory.py b/Classes/product_inventory.py index e337a7d5e..df1ef1afa 100644 --- a/Classes/product_inventory.py +++ b/Classes/product_inventory.py @@ -55,7 +55,9 @@ def print_inventory(self): """ value = 0 for product in self.products: - print '%d\t%s\t%.02f each' % (product.pid, product.qty, product.price) + print '%d\t%s\t%.02f each' % (product.pid, + product.qty, + product.price) value += (product.price * product.qty) print '\nTotal value: %.02f' % value diff --git a/Numbers/change.py b/Numbers/change.py index 6d6f13cde..8bce7273e 100644 --- a/Numbers/change.py +++ b/Numbers/change.py @@ -1,43 +1,39 @@ -# Change Return Program - The user enters a cost and -# then the amount of money given. The program will figure -# out the change and the number of quarters, dimes, nickels, -# pennies needed for the change. - -if __name__ == '__main__': - cost = input("What's the cost in dollars? ") - given = input("What's the amount of dollars given? ") - - change = given - cost - - print "\n" - if change < 0: - print "Please ask for $%.2f more from the customer." % (-change) # double negation - else: - print "The change is $%.2f." % change - - q = 0 # 0.25 - d = 0 # 0.10 - n = 0 # 0.05 - p = 0 # 0.01 - - change = int(change * 100) # let's talk about cents - - if change >= 25: - q = int(change / 25) - change = change % 25 - if change >= 10: - d = int(change / 10) - change = change % 10 - if change >= 5: - n = int(change / 5) - change = change % 5 - if change >= 1: - p = change # rest all change is in pennies - - print "Give the following change to the customer:" - print "Quarters: %d\tDimes: %d\tNickels: %d\tPennies: %d" \ - % (q, d, n, p) - - # DEBUG - # print "Total change per the number of coins is %.2f" % \ - # ((q * .25) + (d * .10) + (n * 0.05) + (p * 0.01)) +# Change Return Program - The user enters a cost and +# then the amount of money given. The program will figure +# out the change and the number of quarters, dimes, nickels, +# pennies needed for the change. + +if __name__ == '__main__': + cost = input("What's the cost in dollars? ") + given = input("What's the amount of dollars given? ") + + change = given - cost + + print "\n" + if change < 0: + print "Please ask for $%.2f more from the customer." % (-change) # double negation + else: + print "The change is $%.2f." % change + + q = 0 # 0.25 + d = 0 # 0.10 + n = 0 # 0.05 + p = 0 # 0.01 + + change = int(change * 100) # let's talk about cents + + if change >= 25: + q = int(change / 25) + change = change % 25 + if change >= 10: + d = int(change / 10) + change = change % 10 + if change >= 5: + n = int(change / 5) + change = change % 5 + if change >= 1: + p = change # rest all change is in pennies + + print "Give the following change to the customer:" + print "Quarters: %d\tDimes: %d\tNickels: %d\tPennies: %d" \ + % (q, d, n, p) From 7464080c62622d508bc4c8772a93791fe121eda8 Mon Sep 17 00:00:00 2001 From: Daniele Bonadiman Date: Wed, 4 Sep 2013 10:39:40 +0200 Subject: [PATCH 061/107] Update README.md The inverted index is not related to graphs but is used in information retrieval --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3113e8a52..6c0a48634 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,9 @@ Graphs **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. +Information Retrieval +--------- + **Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. Text @@ -268,4 +271,4 @@ Sources ======= * [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -* [Rosetta Code](http://rosettacode.org/) \ No newline at end of file +* [Rosetta Code](http://rosettacode.org/) From cc2ed7faf003a0b77437c6936b752f98be6d5d9b Mon Sep 17 00:00:00 2001 From: Daniele Bonadiman Date: Wed, 4 Sep 2013 17:35:24 +0200 Subject: [PATCH 062/107] Update README-scratch.md --- README-scratch.md | 459 +++++++++++++++++++++++----------------------- 1 file changed, 231 insertions(+), 228 deletions(-) diff --git a/README-scratch.md b/README-scratch.md index a81eb6329..b89a3323f 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -1,229 +1,232 @@ -Mega Project List -======== - -Numbers ---------- - -**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. - -**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. - -**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. - -**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. - -**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. - -**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. - -**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. - -**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. - -**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. - -**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. - -**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. - -**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. - -**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). - -**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. - -**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. - -**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. - -**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. - -**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* - -Classic Algorithms ------------------ - +Mega Project List +======== + +Numbers +--------- + +**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. + +**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. + +**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. + +**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. + +**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. + +**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. + +**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. + +**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. + +**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. + +**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. + +**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. + +**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. + +**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). + +**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. + +**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. + +**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. + +**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. + +**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* + +Classic Algorithms +----------------- + **Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. - -**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort. - -**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. - -**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). - -**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. - -Graph --------- -**Graph from links** - Create a program that will create a graph or network from a series of links. - -**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. - -**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not. - -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. - - - -Text ---------- - -**Reverse a String** - Enter a string and the program will reverse it and print it out. - -**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. - -**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. - -**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” - -**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. - -**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* - -**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. - -**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* - -**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* - -**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* - -**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. - -**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. - -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* - -**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* - -**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. - -Networking ---------- - -**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. - -**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. - -**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. - -**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. - -**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* - -**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. - -**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. - -Classes ---------- - -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. - -**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. - -**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. - -**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. - -**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. - -**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. - -**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. - -**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. - -**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. - -Threading ---------- - -**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. - -**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. - -Web ---------- - -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* - -**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. - -**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* - -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. - -**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* - -**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. - -**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. - -**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* - -**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. - -**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. - -Files ---------- - -**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. - -**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. - -**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. - -**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* - -**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* - -**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. - -**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* - -Databases ---------- - -**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. - -**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. - -**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. - -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* - -**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* - -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. - -**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. - -**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. - -Graphics and Multimedia ---------- - -**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* - -**Stream Video from Online** - Try to create your own online streaming video player. - -**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. - -**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* - -**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* - -Security -------------- - -**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. - -=============================================== - -Sources -======= - -* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -* [Rosetta Code](http://rosettacode.org/) \ No newline at end of file + +**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort. + +**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. + +**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). + + +Graph +-------- +**Graph from links** - Create a program that will create a graph or network from a series of links. + +**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. + +**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not. + +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. + +Data Structures +--------- + +**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. + + +Text +--------- + +**Reverse a String** - Enter a string and the program will reverse it and print it out. + +**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. + +**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. + +**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” + +**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. + +**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* + +**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. + +**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* + +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* + +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* + +**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. + +**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. + +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* + +**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* + +**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. + +Networking +--------- + +**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. + +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. + +**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. + +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. + +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* + +**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. + +**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. + +Classes +--------- + +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. + +**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. + +**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. + +**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. + +**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. + +**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. + +**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. + +**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. + +**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. + +Threading +--------- + +**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. + +**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. + +Web +--------- + +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* + +**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. + +**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* + +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. + +**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* + +**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. + +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. + +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* + +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. + +**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. + +Files +--------- + +**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. + +**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. + +**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. + +**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* + +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* + +**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. + +**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* + +Databases +--------- + +**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. + +**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. + +**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. + +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* + +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* + +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. + +**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. + +**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. + +Graphics and Multimedia +--------- + +**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* + +**Stream Video from Online** - Try to create your own online streaming video player. + +**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. + +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* + +**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* + +Security +------------- + +**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. + +=============================================== + +Sources +======= + +* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +* [Rosetta Code](http://rosettacode.org/) From c9e2a81ed3f4603c0c25dcbf88ecdda726c443d4 Mon Sep 17 00:00:00 2001 From: Daniele Bonadiman Date: Wed, 4 Sep 2013 17:36:23 +0200 Subject: [PATCH 063/107] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6c0a48634..8355a725a 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ Graphs **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. -Information Retrieval +Data Structures --------- **Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. From 52949a3095f6f842ff4685090f59ce07a11f9429 Mon Sep 17 00:00:00 2001 From: Daniele Bonadiman Date: Wed, 4 Sep 2013 17:40:56 +0200 Subject: [PATCH 064/107] added Data Structures Folder --- Data Structures/README.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Data Structures/README.md diff --git a/Data Structures/README.md b/Data Structures/README.md new file mode 100644 index 000000000..ec861fe6a --- /dev/null +++ b/Data Structures/README.md @@ -0,0 +1,4 @@ +Data Structures +--------- + +**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. \ No newline at end of file From 434c867e58d3f99c70668900c3ba490295c6ca53 Mon Sep 17 00:00:00 2001 From: Daniele Bonadiman Date: Wed, 4 Sep 2013 17:41:33 +0200 Subject: [PATCH 065/107] Update README.md --- Classic Algorithms/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Classic Algorithms/README.md b/Classic Algorithms/README.md index 9d15e2322..bd88e10d6 100644 --- a/Classic Algorithms/README.md +++ b/Classic Algorithms/README.md @@ -8,5 +8,3 @@ Classic Algorithms **Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. **Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). - -**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. \ No newline at end of file From e38a3b06a765de6d60705374bc300604267faf3b Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 13 Sep 2013 12:45:40 +0530 Subject: [PATCH 066/107] Remove math import --- Numbers/prime.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Numbers/prime.py b/Numbers/prime.py index 45cbe1390..ffa1ea83c 100644 --- a/Numbers/prime.py +++ b/Numbers/prime.py @@ -2,7 +2,6 @@ # and find all Prime Factors (if there are any) and # display them. -import math def is_a_prime(x): for i in range(2, x): From 8da323c5053756da78fb610242165fcd54b5ccf4 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 17 Oct 2013 09:40:39 -0700 Subject: [PATCH 067/107] update --- .gitignore | 76 +++++++++++------------ Classes/README.md | 38 ++++++------ Databases/README.md | 34 +++++----- Files/README.md | 30 ++++----- Graphics and Multimedia/README.md | 22 +++---- Networking/README.md | 30 ++++----- Numbers/README.md | 78 +++++++++++------------ Numbers/alarm.py | 98 ++++++++++++++--------------- Numbers/binary_decimal.py | 100 +++++++++++++++--------------- Numbers/credit_card_validator.py | 82 ++++++++++++------------ Numbers/factorial.py | 66 ++++++++++---------- Numbers/fibonacci.py | 30 ++++----- Numbers/next_prime.py | 50 +++++++-------- Numbers/pi.py | 20 +++--- Numbers/tile.py | 22 +++---- README.md | 2 +- RECOGNITION/README.md | 46 +++++++------- Text/README.md | 62 +++++++++--------- Text/count_words.py | 52 ++++++++-------- Text/palindrome.py | 24 +++---- Text/piglatin.py | 44 ++++++------- Text/reverse.py | 16 ++--- Threading/README.md | 10 +-- Web/README.md | 42 ++++++------- 24 files changed, 537 insertions(+), 537 deletions(-) diff --git a/.gitignore b/.gitignore index c084059d9..966cf2fa9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,39 +1,39 @@ -*.py[cod] - -# C extensions -*.so - -# Packages -*.egg -*.egg-info -dist -build -eggs -parts -bin -var -sdist -develop-eggs -.installed.cfg -lib -lib64 - -# Installer logs -pip-log.txt - -# Unit test / coverage reports -.coverage -.tox -nosetests.xml - -# Translations -*.mo - -# Mr Developer -.mr.developer.cfg -.project -.pydevproject - -# Komodo -.komodotools/ +*.py[cod] + +# C extensions +*.so + +# Packages +*.egg +*.egg-info +dist +build +eggs +parts +bin +var +sdist +develop-eggs +.installed.cfg +lib +lib64 + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox +nosetests.xml + +# Translations +*.mo + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject + +# Komodo +.komodotools/ *.komodoproject \ No newline at end of file diff --git a/Classes/README.md b/Classes/README.md index c37fd9d63..1e45760a8 100644 --- a/Classes/README.md +++ b/Classes/README.md @@ -1,20 +1,20 @@ -Classes ---------- - -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. - -**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. - -**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. - -**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. - -**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. - -**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. - -**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. - -**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. - +Classes +--------- + +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. + +**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. + +**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. + +**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. + +**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. + +**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. + +**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. + +**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. + **Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. \ No newline at end of file diff --git a/Databases/README.md b/Databases/README.md index 6ca5485da..48fe04a91 100644 --- a/Databases/README.md +++ b/Databases/README.md @@ -1,18 +1,18 @@ -Databases ---------- - -**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. - -**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. - -**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. - -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* - -**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* - -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. - -**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. - +Databases +--------- + +**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. + +**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. + +**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. + +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* + +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* + +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. + +**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. + **Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. \ No newline at end of file diff --git a/Files/README.md b/Files/README.md index 881155570..b564c730b 100644 --- a/Files/README.md +++ b/Files/README.md @@ -1,16 +1,16 @@ -Files ---------- - -**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. - -**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. - -**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. - -**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* - -**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* - -**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. - +Files +--------- + +**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. + +**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. + +**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. + +**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* + +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* + +**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. + **Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* \ No newline at end of file diff --git a/Graphics and Multimedia/README.md b/Graphics and Multimedia/README.md index f7aa3ce9a..f104dac4c 100644 --- a/Graphics and Multimedia/README.md +++ b/Graphics and Multimedia/README.md @@ -1,12 +1,12 @@ -Graphics and Multimedia ---------- - -**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* - -**Stream Video from Online** - Try to create your own online streaming video player. - -**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. - -**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* - +Graphics and Multimedia +--------- + +**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* + +**Stream Video from Online** - Try to create your own online streaming video player. + +**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. + +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* + **Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* \ No newline at end of file diff --git a/Networking/README.md b/Networking/README.md index d222d7db4..81565e25e 100644 --- a/Networking/README.md +++ b/Networking/README.md @@ -1,16 +1,16 @@ -Networking ---------- - -**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. - -**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. - -**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. - -**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. - -**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* - -**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. - +Networking +--------- + +**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. + +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. + +**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. + +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. + +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* + +**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. + **Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. \ No newline at end of file diff --git a/Numbers/README.md b/Numbers/README.md index ce820a66d..c6fc22db6 100644 --- a/Numbers/README.md +++ b/Numbers/README.md @@ -1,40 +1,40 @@ -Numbers ---------- - -**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. - -**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. - -**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. - -**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. - -**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. - -**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. - -**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. - -**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. - -**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. - -**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. - -**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. - -**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. - -**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). - -**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. - -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. - -**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. - -**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. - -**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. - +Numbers +--------- + +**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. + +**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. + +**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. + +**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. + +**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. + +**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. + +**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. + +**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. + +**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. + +**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. + +**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. + +**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. + +**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). + +**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. + +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. + +**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. + +**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. + +**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. + **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* \ No newline at end of file diff --git a/Numbers/alarm.py b/Numbers/alarm.py index a0a1c7367..24e0d9e81 100644 --- a/Numbers/alarm.py +++ b/Numbers/alarm.py @@ -1,49 +1,49 @@ -""" -Alarm Clock - A simple clock where it plays a sound after -X number of minutes/seconds or at a particular time. - -Dependencies: -pyglet - pip install pyglet -""" - -import time -import winsound -import pyglet - -def play(hh, mm): - not_alarmed = 1 - - while(not_alarmed): - cur_time = list(time.localtime()) # get the time right now - hour = cur_time[3] # find the hour - minute = cur_time[4] # and the minute - if hour == hh and minute == mm: - song = pyglet.media.load('bin/sound.wav') - song.play() # play the sound - pyglet.app.run() - not_alarmed = 0 # stop the loop - -if __name__ == '__main__': - - print """ - 1. Play sound after X minutes - 2. Play sound at an exact time - """ - choice = input('What do you want to do? ') - - if choice == 1: - mins = input('How many minutes from now? ') - hh_from_now = mins / 60 # if minutes > 60, this will adjust the hours - mm_from_now = mins % 60 # and then the minutes - cur_time = list(time.localtime()) # get the time right now - hour = cur_time[3] # find the current hour - minute = cur_time[4] # and the current minute - hh = (hour + hh_from_now) % 24 # cycle through the clock if hh > 24 - mm = (minute + mm_from_now) % 60 # cycle through the clock if mm > 60 - play(hh, mm) - elif choice == 2: - hh = input('What hour do you want to wake up (0-23)? ') - mm = input('What minute do you want to wake up (0-59)? ') - play(hh, mm) - +""" +Alarm Clock - A simple clock where it plays a sound after +X number of minutes/seconds or at a particular time. + +Dependencies: +pyglet + pip install pyglet +""" + +import time +import winsound +import pyglet + +def play(hh, mm): + not_alarmed = 1 + + while(not_alarmed): + cur_time = list(time.localtime()) # get the time right now + hour = cur_time[3] # find the hour + minute = cur_time[4] # and the minute + if hour == hh and minute == mm: + song = pyglet.media.load('bin/sound.wav') + song.play() # play the sound + pyglet.app.run() + not_alarmed = 0 # stop the loop + +if __name__ == '__main__': + + print """ + 1. Play sound after X minutes + 2. Play sound at an exact time + """ + choice = input('What do you want to do? ') + + if choice == 1: + mins = input('How many minutes from now? ') + hh_from_now = mins / 60 # if minutes > 60, this will adjust the hours + mm_from_now = mins % 60 # and then the minutes + cur_time = list(time.localtime()) # get the time right now + hour = cur_time[3] # find the current hour + minute = cur_time[4] # and the current minute + hh = (hour + hh_from_now) % 24 # cycle through the clock if hh > 24 + mm = (minute + mm_from_now) % 60 # cycle through the clock if mm > 60 + play(hh, mm) + elif choice == 2: + hh = input('What hour do you want to wake up (0-23)? ') + mm = input('What minute do you want to wake up (0-59)? ') + play(hh, mm) + diff --git a/Numbers/binary_decimal.py b/Numbers/binary_decimal.py index f378fb76f..5453fb888 100644 --- a/Numbers/binary_decimal.py +++ b/Numbers/binary_decimal.py @@ -1,50 +1,50 @@ -""" -Binary to Decimal and Back Converter -Develop a converter to convert a decimal number to binary -or a binary number to its decimal equivalent. -""" - -def binary_to_decimal(binary): - """ - Converts a binary number into a decimal number. - """ - decimal = 0 - index = 0 - while binary > 0: - last = binary % 10 - binary = binary / 10 - decimal += (last * (2 ** index)) - index += 1 - return decimal - -def decimal_to_binary(decimal): - """ - Converts a decimal number into a binary number. - """ - binary = "" - remainders = [] - while decimal > 0: - remainders.append(str(decimal % 2)) - decimal /= 2 - remainders.reverse() - binary = "".join(remainders) - return binary - -if __name__ == '__main__': - print """ - 1. Binary to Decimal - 2. Decimal to Binary\n - """ - - choice = input("Make a choice: ") - - if choice == 1: - binary = input("Binary to convert: ") - print "The binary number %d in decimal is %d" % \ - (binary, binary_to_decimal(binary)) - elif choice == 2: - decimal = input("Decimal to convert: ") - print "The decimal number %d in binary is %s" % \ - (decimal, decimal_to_binary(decimal)) - else: - print "Invalid choice" +""" +Binary to Decimal and Back Converter +Develop a converter to convert a decimal number to binary +or a binary number to its decimal equivalent. +""" + +def binary_to_decimal(binary): + """ + Converts a binary number into a decimal number. + """ + decimal = 0 + index = 0 + while binary > 0: + last = binary % 10 + binary = binary / 10 + decimal += (last * (2 ** index)) + index += 1 + return decimal + +def decimal_to_binary(decimal): + """ + Converts a decimal number into a binary number. + """ + binary = "" + remainders = [] + while decimal > 0: + remainders.append(str(decimal % 2)) + decimal /= 2 + remainders.reverse() + binary = "".join(remainders) + return binary + +if __name__ == '__main__': + print """ + 1. Binary to Decimal + 2. Decimal to Binary\n + """ + + choice = input("Make a choice: ") + + if choice == 1: + binary = input("Binary to convert: ") + print "The binary number %d in decimal is %d" % \ + (binary, binary_to_decimal(binary)) + elif choice == 2: + decimal = input("Decimal to convert: ") + print "The decimal number %d in binary is %s" % \ + (decimal, decimal_to_binary(decimal)) + else: + print "Invalid choice" diff --git a/Numbers/credit_card_validator.py b/Numbers/credit_card_validator.py index 7bb0a39cf..fb4e8fc95 100644 --- a/Numbers/credit_card_validator.py +++ b/Numbers/credit_card_validator.py @@ -1,41 +1,41 @@ -""" -Credit Card Validator - Takes in a credit card number from a -common credit card vendor (Visa, MasterCard, American Express, -Discoverer) and validates it to make sure that it is a valid -number (look into how credit cards use a checksum). - -This program works with *most* credit card numbers. - -Uses Luhn Algorithm (http://en.wikipedia.org/wiki/Luhn_algorithm). - -1. From the rightmost digit, which is the check digit, moving -left, double the value of every second digit; if product of this -doubling operation is greater than 9 (e.g., 7 * 2 = 14), then -sum the digits of the products (e.g., 10: 1 + 0 = 1, 14: 1 + 4 = 5). - -2. Add together doubled digits with the undoubled digits from the -original number. - -3. If the total modulo 10 is equal to 0 (if the total ends in zero) -then the number is valid according to the Luhn formula; else it is -not valid. -""" - -if __name__ == '__main__': - number = raw_input('Enter the credit card number of check: ').replace(' ', '') - #if not number.isdigit(): - # raise Exception('Invalid credit card number. Make sure it\'s all digits (with optional spaces in between).' - - digits = [int(char) for char in number] - - # double alternate digits (step 1) - doubled = [(digit * 2) if (i % 2 == 0) else digit \ - for (i, digit) in enumerate(digits)] # i <3 python - # sum digits of number > 10 (step 2) - summed = [num if num < 10 else sum([int(dig) for dig in str(num)]) \ - for num in doubled] # i <3 python ** 2 - # step 3 - if sum(summed) % 10 == 0: - print 'The number is valid' - else: - print 'The number is invalid' +""" +Credit Card Validator - Takes in a credit card number from a +common credit card vendor (Visa, MasterCard, American Express, +Discoverer) and validates it to make sure that it is a valid +number (look into how credit cards use a checksum). + +This program works with *most* credit card numbers. + +Uses Luhn Algorithm (http://en.wikipedia.org/wiki/Luhn_algorithm). + +1. From the rightmost digit, which is the check digit, moving +left, double the value of every second digit; if product of this +doubling operation is greater than 9 (e.g., 7 * 2 = 14), then +sum the digits of the products (e.g., 10: 1 + 0 = 1, 14: 1 + 4 = 5). + +2. Add together doubled digits with the undoubled digits from the +original number. + +3. If the total modulo 10 is equal to 0 (if the total ends in zero) +then the number is valid according to the Luhn formula; else it is +not valid. +""" + +if __name__ == '__main__': + number = raw_input('Enter the credit card number of check: ').replace(' ', '') + #if not number.isdigit(): + # raise Exception('Invalid credit card number. Make sure it\'s all digits (with optional spaces in between).' + + digits = [int(char) for char in number] + + # double alternate digits (step 1) + doubled = [(digit * 2) if (i % 2 == 0) else digit \ + for (i, digit) in enumerate(digits)] # i <3 python + # sum digits of number > 10 (step 2) + summed = [num if num < 10 else sum([int(dig) for dig in str(num)]) \ + for num in doubled] # i <3 python ** 2 + # step 3 + if sum(summed) % 10 == 0: + print 'The number is valid' + else: + print 'The number is invalid' diff --git a/Numbers/factorial.py b/Numbers/factorial.py index b09d5e2f4..cd8e753fc 100644 --- a/Numbers/factorial.py +++ b/Numbers/factorial.py @@ -1,33 +1,33 @@ -""" -Factorial Finder - The Factorial of a positive integer, n, -is defined as the product of the sequence n, n-1, n-2, ...1 -and the factorial of zero, 0, is defined as being 1. Solve -this using both loops and recursion. -""" - -def fact_loop(n): - """ - Returns the factorial of a given positive, non-zero integer - using loops. - """ - fact = 1 - while n > 0: - fact *= n - n -= 1 - return fact - -def fact_recursion(n): - """ - Returns the factorial of a given positive, non-zero integer - using recursion. - """ - return 1 if n == 0 else n * fact_recursion(n - 1) # if user as ternary operator - -if __name__ == '__main__': - n = input('Enter a positive number: ') - - if n >= 0: - print 'Factorial of %d by loops is %d' % (n, fact_loop(n)) - print 'Factorial of %d by recursion is %d' % (n, fact_recursion(n)) - else: - print 'Not a valid number' +""" +Factorial Finder - The Factorial of a positive integer, n, +is defined as the product of the sequence n, n-1, n-2, ...1 +and the factorial of zero, 0, is defined as being 1. Solve +this using both loops and recursion. +""" + +def fact_loop(n): + """ + Returns the factorial of a given positive, non-zero integer + using loops. + """ + fact = 1 + while n > 0: + fact *= n + n -= 1 + return fact + +def fact_recursion(n): + """ + Returns the factorial of a given positive, non-zero integer + using recursion. + """ + return 1 if n == 0 else n * fact_recursion(n - 1) # if user as ternary operator + +if __name__ == '__main__': + n = input('Enter a positive number: ') + + if n >= 0: + print 'Factorial of %d by loops is %d' % (n, fact_loop(n)) + print 'Factorial of %d by recursion is %d' % (n, fact_recursion(n)) + else: + print 'Not a valid number' diff --git a/Numbers/fibonacci.py b/Numbers/fibonacci.py index a6692a94f..2c239b48d 100644 --- a/Numbers/fibonacci.py +++ b/Numbers/fibonacci.py @@ -1,15 +1,15 @@ -# -*- coding: cp1252 -*- -# Fibonacci Sequence - Enter a number and have the -# program generate the Fibonacci sequence to that number -# or to the Nth number - -n = int(raw_input('How many numbers do you need? ')) -series = [1] - -while len(series) < n: - if len(series) == 1: - series.append(1) - else: - series.append(series[-1] + series[-2]) - -print series +# -*- coding: cp1252 -*- +# Fibonacci Sequence - Enter a number and have the +# program generate the Fibonacci sequence to that number +# or to the Nth number + +n = int(raw_input('How many numbers do you need? ')) +series = [1] + +while len(series) < n: + if len(series) == 1: + series.append(1) + else: + series.append(series[-1] + series[-2]) + +print series diff --git a/Numbers/next_prime.py b/Numbers/next_prime.py index 0f356acee..3d479bd07 100644 --- a/Numbers/next_prime.py +++ b/Numbers/next_prime.py @@ -1,25 +1,25 @@ -# Next Prime Number - Have the program find prime -# numbers until the user chooses to stop asking for -# the next one. - -def next_prime(current): - next_prime = current + 1 # start checking for primes 1 number after the current one - i = 2 - while next_prime > i: # check with numbers up to next_prime - 1 - if next_prime % i == 0: # if number is divisible - next_prime += 1 # ready to check the next number - i = 2 # reset i to check divisibility again from 2 - else: - i += 1 # increment the divisor - return next_prime - -if __name__ == '__main__': - current_prime = 2 - while True: - response = raw_input('Do you want the next prime? (Y/N) ') - - if response.lower().startswith('y'): - print current_prime - current_prime = next_prime(current_prime) - else: - break +# Next Prime Number - Have the program find prime +# numbers until the user chooses to stop asking for +# the next one. + +def next_prime(current): + next_prime = current + 1 # start checking for primes 1 number after the current one + i = 2 + while next_prime > i: # check with numbers up to next_prime - 1 + if next_prime % i == 0: # if number is divisible + next_prime += 1 # ready to check the next number + i = 2 # reset i to check divisibility again from 2 + else: + i += 1 # increment the divisor + return next_prime + +if __name__ == '__main__': + current_prime = 2 + while True: + response = raw_input('Do you want the next prime? (Y/N) ') + + if response.lower().startswith('y'): + print current_prime + current_prime = next_prime(current_prime) + else: + break diff --git a/Numbers/pi.py b/Numbers/pi.py index 559480110..027c63e50 100644 --- a/Numbers/pi.py +++ b/Numbers/pi.py @@ -1,10 +1,10 @@ -# Find PI to the Nth Digit - -from math import * - -digits = raw_input('Enter number of digits to round PI to: ') - -# print ('{0:.%df}' % min(20, int(digits))).format(math.pi) # nested string formatting - -# calculate pi using Machin-like Formula -print ('{0:.%df}' % min(30, int(digits))).format(4 * (4 * atan(1.0/5.0) - atan(1.0/239.0))) +# Find PI to the Nth Digit + +from math import * + +digits = raw_input('Enter number of digits to round PI to: ') + +# print ('{0:.%df}' % min(20, int(digits))).format(math.pi) # nested string formatting + +# calculate pi using Machin-like Formula +print ('{0:.%df}' % min(30, int(digits))).format(4 * (4 * atan(1.0/5.0) - atan(1.0/239.0))) diff --git a/Numbers/tile.py b/Numbers/tile.py index 6f4d7cf62..1b5b23408 100644 --- a/Numbers/tile.py +++ b/Numbers/tile.py @@ -1,11 +1,11 @@ -# Find Cost of Tile to Cover W x H Floor - Calculate -# the total cost of tile it would take to cover a floor -# plan of width and height, using a cost entered by the user. - -# Use input as the input can be integer and float -cost = input("What's the cost per sq. feet? ") -width = input("What's the width of the floor? ") -height = input("What's the height of the floor? ") - -print "The total cost is $%.2f for %.2f square feet" \ - % (width * height * cost, width * height) +# Find Cost of Tile to Cover W x H Floor - Calculate +# the total cost of tile it would take to cover a floor +# plan of width and height, using a cost entered by the user. + +# Use input as the input can be integer and float +cost = input("What's the cost per sq. feet? ") +width = input("What's the width of the floor? ") +height = input("What's the height of the floor? ") + +print "The total cost is $%.2f for %.2f square feet" \ + % (width * height * cost, width * height) diff --git a/README.md b/README.md index 8355a725a..e70871f9f 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,7 @@ Web [**Get Atomic Time from Internet Clock**](https://github.com/thekarangoel/Projects/blob/master/Web/time.py) - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. -**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* +[**Fetch Current Weather**](https://github.com/thekarangoel/GAE-weather) - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* **Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. diff --git a/RECOGNITION/README.md b/RECOGNITION/README.md index c6b3c1aec..d79d2c85a 100644 --- a/RECOGNITION/README.md +++ b/RECOGNITION/README.md @@ -1,24 +1,24 @@ -Recognition for Projects -========================= - -### Throughout July - -Ever since this repo was created, it has been in the top list on GH. Be it the daily or weekly list! - -Projects is the #5 most forked repo on GH done in Python language! - -![](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top-languages-python-2013-07-25.png) - -### July 25 2013 - -In the monthly top list on GH. - -![Showed up on top monthly list](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-monthly-2013-07-25.png) - -### July 14 2013 - -Just 10 days after the repo was created, it showed up in the top 5 on GH. - -![](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png) - +Recognition for Projects +========================= + +### Throughout July + +Ever since this repo was created, it has been in the top list on GH. Be it the daily or weekly list! + +Projects is the #5 most forked repo on GH done in Python language! + +![](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top-languages-python-2013-07-25.png) + +### July 25 2013 + +In the monthly top list on GH. + +![Showed up on top monthly list](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-monthly-2013-07-25.png) + +### July 14 2013 + +Just 10 days after the repo was created, it showed up in the top 5 on GH. + +![](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png) + Check other screenshots in this repo for more GH explore page rankings following that day. \ No newline at end of file diff --git a/Text/README.md b/Text/README.md index 9cfb18abb..b2147d7bd 100644 --- a/Text/README.md +++ b/Text/README.md @@ -1,32 +1,32 @@ -Text ---------- - -**Reverse a String** - Enter a string and the program will reverse it and print it out. - -**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. - -**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. - -**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” - -**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. - -**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* - -**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. - -**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* - -**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* - -**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* - -**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. - -**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. - -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* - -**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* - +Text +--------- + +**Reverse a String** - Enter a string and the program will reverse it and print it out. + +**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. + +**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. + +**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” + +**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. + +**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* + +**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. + +**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* + +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* + +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* + +**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. + +**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. + +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* + +**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* + **Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. \ No newline at end of file diff --git a/Text/count_words.py b/Text/count_words.py index 113c31f81..afe0daccc 100644 --- a/Text/count_words.py +++ b/Text/count_words.py @@ -1,26 +1,26 @@ -""" -Count Words in a String - Counts the number of individual -words in a string and display the top 5/10 most used words. -""" - -from collections import defaultdict -import operator - -if __name__ == '__main__': - text = raw_input('Enter some text: \n') - words = text.split() # very naive approach, split at space - - counts = defaultdict(int) # no need to check existence of a key - - # find count of each word - for word in words: - counts[word] += 1 - - # sort the dict by the count of each word, returns a tuple (word, count) - sorted_counts = sorted(counts.iteritems(), \ - key=operator.itemgetter(1), \ - reverse=True) - - # print top 5 words - for (word,count) in sorted_counts[:5]: # thanks @jrwren for this! - print (word, count) +""" +Count Words in a String - Counts the number of individual +words in a string and display the top 5/10 most used words. +""" + +from collections import defaultdict +import operator + +if __name__ == '__main__': + text = raw_input('Enter some text: \n') + words = text.split() # very naive approach, split at space + + counts = defaultdict(int) # no need to check existence of a key + + # find count of each word + for word in words: + counts[word] += 1 + + # sort the dict by the count of each word, returns a tuple (word, count) + sorted_counts = sorted(counts.iteritems(), \ + key=operator.itemgetter(1), \ + reverse=True) + + # print top 5 words + for (word,count) in sorted_counts[:5]: # thanks @jrwren for this! + print (word, count) diff --git a/Text/palindrome.py b/Text/palindrome.py index 43c7f4145..8e9cf3a38 100644 --- a/Text/palindrome.py +++ b/Text/palindrome.py @@ -1,12 +1,12 @@ -""" -Check if Palindrome - Checks if the string entered -by the user is a palindrome. That is that it reads -the same forwards as backwards like "racecar" -""" - -string = raw_input('Enter a string: ').lower() - -if string == string[::-1]: - print '%s is a palindrome' % string -else: - print '%s is not a palindrome' % string +""" +Check if Palindrome - Checks if the string entered +by the user is a palindrome. That is that it reads +the same forwards as backwards like "racecar" +""" + +string = raw_input('Enter a string: ').lower() + +if string == string[::-1]: + print '%s is a palindrome' % string +else: + print '%s is not a palindrome' % string diff --git a/Text/piglatin.py b/Text/piglatin.py index 07af62233..f5b09251e 100644 --- a/Text/piglatin.py +++ b/Text/piglatin.py @@ -1,22 +1,22 @@ -""" -Pig Latin - Pig Latin is a game of alterations played -on the English language game. To create the Pig Latin -form of an English word the initial consonant sound is -transposed to the end of the word and an ay is affixed -(Ex.: "banana" would yield anana-bay). Read Wikipedia -for more information on rules. -""" - -word = raw_input('What\'s your word? ').lower() -vowels = 'aeiou' - -pig = 'ay' - -first = word[0] - -if first in vowels: - new = word + pig -else: - new = word[1:] + first + pig - -print new +""" +Pig Latin - Pig Latin is a game of alterations played +on the English language game. To create the Pig Latin +form of an English word the initial consonant sound is +transposed to the end of the word and an ay is affixed +(Ex.: "banana" would yield anana-bay). Read Wikipedia +for more information on rules. +""" + +word = raw_input('What\'s your word? ').lower() +vowels = 'aeiou' + +pig = 'ay' + +first = word[0] + +if first in vowels: + new = word + pig +else: + new = word[1:] + first + pig + +print new diff --git a/Text/reverse.py b/Text/reverse.py index 5cec022c3..82d5331f1 100644 --- a/Text/reverse.py +++ b/Text/reverse.py @@ -1,8 +1,8 @@ -# -*- coding: cp1252 -*- -""" -Reverse a String - Enter a string and the program -will reverse it and print it out. -""" - -string = raw_input("Whatchu wanna say to me? ") -print "You say %s, I say %s" % (string, string[::-1]) +# -*- coding: cp1252 -*- +""" +Reverse a String - Enter a string and the program +will reverse it and print it out. +""" + +string = raw_input("Whatchu wanna say to me? ") +print "You say %s, I say %s" % (string, string[::-1]) diff --git a/Threading/README.md b/Threading/README.md index 70550fd4e..17fdcd043 100644 --- a/Threading/README.md +++ b/Threading/README.md @@ -1,6 +1,6 @@ -Threading ---------- - -**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. - +Threading +--------- + +**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. + **Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. \ No newline at end of file diff --git a/Web/README.md b/Web/README.md index 82708b573..cba41d524 100644 --- a/Web/README.md +++ b/Web/README.md @@ -1,22 +1,22 @@ -Web ---------- - -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* - -**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. - -**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* - -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. - -**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* - -**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. - -**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. - -**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* - -**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. - +Web +--------- + +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* + +**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. + +**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* + +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. + +**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* + +**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. + +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. + +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* + +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. + **CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. \ No newline at end of file From 6eddc253b949be514829503510594d65bce9ab18 Mon Sep 17 00:00:00 2001 From: Santosh Kumar Date: Mon, 21 Oct 2013 18:05:43 +0530 Subject: [PATCH 068/107] Fixed the markdown Documentation link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e70871f9f..b3fe9d25e 100644 --- a/README.md +++ b/README.md @@ -139,7 +139,7 @@ Text **Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* -**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* +**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](http://daringfireball.net/projects/markdown/syntax).* **Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. From 41debc368db5b4fde08c9ee5a83238535959b0f2 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 23 Oct 2013 16:26:17 -0700 Subject: [PATCH 069/107] Fix markdown docs url --- .DS_Store | Bin 0 -> 6148 bytes README-scratch.md | 2 +- Text/README.md | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Wed, 23 Oct 2013 16:28:03 -0700 Subject: [PATCH 070/107] Delete .DS_Store --- .DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Sat, 23 Nov 2013 09:15:56 -0800 Subject: [PATCH 071/107] Fix #34 --- Numbers/binary_decimal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Numbers/binary_decimal.py b/Numbers/binary_decimal.py index 5453fb888..b6846b726 100644 --- a/Numbers/binary_decimal.py +++ b/Numbers/binary_decimal.py @@ -28,7 +28,7 @@ def decimal_to_binary(decimal): decimal /= 2 remainders.reverse() binary = "".join(remainders) - return binary + return 0 if binary == "" else binary if __name__ == '__main__': print """ From d1a0c320483d8b5c94e9457a4384db3d4d10267f Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sat, 23 Nov 2013 20:06:18 -0800 Subject: [PATCH 072/107] Real reverse algorithm #31 --- Text/reverse.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Text/reverse.py b/Text/reverse.py index 82d5331f1..3a1296545 100644 --- a/Text/reverse.py +++ b/Text/reverse.py @@ -5,4 +5,7 @@ """ string = raw_input("Whatchu wanna say to me? ") -print "You say %s, I say %s" % (string, string[::-1]) +copy = [c for c in string] +for i in range(len(copy) / 2): + copy[i], copy[len(copy) - i - 1] = copy[len(copy) - i - 1], copy[i] +print "You say %s, I say %s" % (string, ''.join(copy)) From 97f8597da739557c37e3b46f1e9de4656702cf9a Mon Sep 17 00:00:00 2001 From: Bitdeli Chef Date: Mon, 25 Nov 2013 22:44:55 +0000 Subject: [PATCH 073/107] Add a Bitdeli badge to README --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index b3fe9d25e..d1f316043 100644 --- a/README.md +++ b/README.md @@ -272,3 +272,7 @@ Sources * [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) * [Rosetta Code](http://rosettacode.org/) + + +[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/karan/projects/trend.png)](https://bitdeli.com/free "Bitdeli Badge") + From c8d140412dc816bb31ef928b4220fa6518239b26 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sun, 8 Dec 2013 11:56:41 -0800 Subject: [PATCH 074/107] remove .DS_Store --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 966cf2fa9..d77b8a24e 100644 --- a/.gitignore +++ b/.gitignore @@ -36,4 +36,6 @@ nosetests.xml # Komodo .komodotools/ -*.komodoproject \ No newline at end of file +*.komodoproject + +.DS_Store \ No newline at end of file From 39a2ff6eedc45e5df634fc0613e4491530df86b5 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sun, 8 Dec 2013 12:16:30 -0800 Subject: [PATCH 075/107] completed tax --- Numbers/tax.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Numbers/tax.py diff --git a/Numbers/tax.py b/Numbers/tax.py new file mode 100644 index 000000000..76ccf776a --- /dev/null +++ b/Numbers/tax.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python + +TAXES = { + 'WA': 9.5, + 'CA': 7.5, + 'FL': 10.8, + 'OH': 7.8 +} + +state = raw_input('What\'s your state (WA / CA / FL / OH)?: ') +cost = float(raw_input('And the cost?: ')) + +tax = TAXES[state] / 100 * cost + +print 'Cost: %.02f\nTax: %.02f\n----------\nTotal: %.02f' % (cost, tax, cost + tax) \ No newline at end of file From 85ddcdca7a93560accb1a5d761772f0a0fc64ea2 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sun, 8 Dec 2013 12:17:36 -0800 Subject: [PATCH 076/107] Update README.md --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d1f316043..332b92ac7 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ Numbers [**Credit Card Validator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/credit_card_validator.py) - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). -**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. +[**Tax Calculator**](https://github.com/karan/Projects/blob/master/Numbers/tax.py) - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. [**Factorial Finder**](https://github.com/thekarangoel/Projects/blob/master/Numbers/factorial.py) - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. @@ -272,7 +272,7 @@ Sources * [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) * [Rosetta Code](http://rosettacode.org/) - - -[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/karan/projects/trend.png)](https://bitdeli.com/free "Bitdeli Badge") - + + +[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/karan/projects/trend.png)](https://bitdeli.com/free "Bitdeli Badge") + From be8dd11422d9632f19e0f286d4d1f1bb8ca5c550 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 17 Dec 2013 08:41:44 -0800 Subject: [PATCH 077/107] add license issue #37 --- LICENSE.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 LICENSE.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 000000000..378233073 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,22 @@ +The MIT License (MIT) +Copyright (c) 2013 Karan Goel + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell copies of the +Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file From 36fd96bff7a4b895f1ddc7077e316ff98d4b4259 Mon Sep 17 00:00:00 2001 From: jintonation Date: Wed, 22 Jan 2014 09:08:46 -0700 Subject: [PATCH 078/107] Create caesar_cipher.py --- Text/caesar_cipher.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Text/caesar_cipher.py diff --git a/Text/caesar_cipher.py b/Text/caesar_cipher.py new file mode 100644 index 000000000..5e2698679 --- /dev/null +++ b/Text/caesar_cipher.py @@ -0,0 +1,40 @@ +""" +Caesar Cipher - Enter the cipher number and the program will "encrypt" them with +the Caesar cipher (a.k.a. ROT #). Type the word "exit" when you're finished. +""" + +while True: + try: + cipher = int(raw_input("Enter the cipher number: ")) + break + except ValueError: + print "I need a valid integer, please." + +print "Enter the text to be encoded." +print "Enter \"exit\" to leave." + +if __name__ == '__main__': + while True: + text = raw_input("> ") + encoded = [] + + if text.lower() == "exit": + break + + for letter in text: + if letter.isalpha(): + is_upper = False + + if letter == letter.upper(): + is_upper = True + letter = letter.lower() + + value = (ord(letter) - 97 + cipher) % 26 + if is_upper: + value -= 32 + + encoded.append(chr(value + 97)) + else: + encoded.append(letter) + + print ''.join(encoded) From 156235c44064338722e90736ea97372ca82346f4 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sat, 1 Mar 2014 12:26:35 -0800 Subject: [PATCH 079/107] donate links --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 332b92ac7..8834729d3 100644 --- a/README.md +++ b/README.md @@ -23,9 +23,15 @@ You can find implementations of these projects in many other languages by other ================================ -### [Donate](https://www.gittip.com/Karan%20Goel/) +### Donations -If you love and use *Projects*, please consider [donating via gittip](https://www.gittip.com/Karan%20Goel/). Any support is appreciated! +If *Projects* has helped you in any way, and you'd like to help the developer, please consider donating. + +**- BTC: [19dLDL4ax7xRmMiGDAbkizh6WA6Yei2zP5](http://i.imgur.com/bAQgKLN.png)** + +**- Gittip: [https://www.gittip.com/karan/](https://www.gittip.com/karan/)** + +**- Flattr: [https://flattr.com/profile/thekarangoel](https://flattr.com/profile/thekarangoel)** ================================ From bca05a698ae5d218360f29f1a14da42f1c1547af Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 7 Mar 2014 21:52:40 -0800 Subject: [PATCH 080/107] add coin flip simulation project. close #40 --- Numbers/README.md | 4 +++- README-scratch.md | 2 ++ README.md | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Numbers/README.md b/Numbers/README.md index c6fc22db6..2253abd86 100644 --- a/Numbers/README.md +++ b/Numbers/README.md @@ -37,4 +37,6 @@ Numbers **Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. -**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* \ No newline at end of file +**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* + +**Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. diff --git a/README-scratch.md b/README-scratch.md index bef59871d..9be6373b3 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -40,6 +40,8 @@ Numbers **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* +**Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. + Classic Algorithms ----------------- diff --git a/README.md b/README.md index 8834729d3..36d76f79f 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,8 @@ Numbers **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* +**Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. + Classic Algorithms ----------------- @@ -278,6 +280,7 @@ Sources * [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) * [Rosetta Code](http://rosettacode.org/) +* Lots and lots of contributors. Thank you all. [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/karan/projects/trend.png)](https://bitdeli.com/free "Bitdeli Badge") From 3b61ba35eb88045a6e0ca3faa0d3bc0ad94a24e9 Mon Sep 17 00:00:00 2001 From: Gaurav Pareek Date: Mon, 14 Apr 2014 11:56:38 +0530 Subject: [PATCH 081/107] Update alarm.py In case of Choice 1 the previous code would play alarm on wrong time. For e.g. current time is 03:40 and users sets alarm for after 150 minutes so it should play alarm on 06:10 but code would play at 5:10 itself. I have edited the code for this condition as well. --- Numbers/alarm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Numbers/alarm.py b/Numbers/alarm.py index 24e0d9e81..2d7be3678 100644 --- a/Numbers/alarm.py +++ b/Numbers/alarm.py @@ -39,7 +39,7 @@ def play(hh, mm): cur_time = list(time.localtime()) # get the time right now hour = cur_time[3] # find the current hour minute = cur_time[4] # and the current minute - hh = (hour + hh_from_now) % 24 # cycle through the clock if hh > 24 + hh = (hour + hh_from_now+(minute+mm_from_now)/60) % 24 # cycle through the clock if hh > 24 mm = (minute + mm_from_now) % 60 # cycle through the clock if mm > 60 play(hh, mm) elif choice == 2: From 5d378c7c49ded576a9dc5f288010fe320927583c Mon Sep 17 00:00:00 2001 From: Gaurav Pareek Date: Mon, 14 Apr 2014 22:52:48 +0530 Subject: [PATCH 082/107] Update piglatin.py The existing program will give wrong output in case of glove or the letters which have more than 1 consonant at starting. I have modified it to give correct output, please let me know if i have missed any test case. --- Text/piglatin.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Text/piglatin.py b/Text/piglatin.py index f5b09251e..37313a6c2 100644 --- a/Text/piglatin.py +++ b/Text/piglatin.py @@ -12,11 +12,26 @@ pig = 'ay' +consonant = [] +count = 0 +copy = [c for c in word] + +for i in range(len(copy) - 1): + count = i + if copy[i] in vowels: + break + else: + consonant.append(copy[i]) + +new = word[count:] + "".join(consonant) + pig + +""" first = word[0] if first in vowels: new = word + pig else: new = word[1:] + first + pig +""" print new From 0e3eb440656d75f540b17db4363b87386da49a95 Mon Sep 17 00:00:00 2001 From: jbranchaud Date: Sun, 20 Apr 2014 19:49:58 -0300 Subject: [PATCH 083/107] Fixing Ceasar Cipher descriptions by changing all occurrences of 25 to 26. --- README.md | 2 +- Security/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 36d76f79f..30a91383a 100644 --- a/README.md +++ b/README.md @@ -271,7 +271,7 @@ Graphics and Multimedia Security ------------- -**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. +**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 26. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 26th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 26 keys. =============================================== diff --git a/Security/README.md b/Security/README.md index a654b76c7..3d6941ab5 100644 --- a/Security/README.md +++ b/Security/README.md @@ -1,4 +1,4 @@ Security ------------- -**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. \ No newline at end of file +**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 26. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 26th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 26 keys. From 86c69ddca9db6b12c685f2334830090845789a24 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sun, 11 May 2014 09:42:17 -0700 Subject: [PATCH 084/107] Remove bitdeli badge --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 30a91383a..afd482ad6 100644 --- a/README.md +++ b/README.md @@ -282,6 +282,3 @@ Sources * [Rosetta Code](http://rosettacode.org/) * Lots and lots of contributors. Thank you all. - -[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/karan/projects/trend.png)](https://bitdeli.com/free "Bitdeli Badge") - From 36b52ed4673735a28a5eb6476029fa990541c878 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 13 May 2014 08:26:36 -0700 Subject: [PATCH 085/107] remove my solutions --- Classes/product_inventory.py | 80 ----------- Classic Algorithms/collatz.py | 29 ---- Numbers/alarm.py | 49 ------- Numbers/binary_decimal.py | 50 ------- Numbers/calc.py | 17 --- Numbers/change.py | 39 ------ Numbers/credit_card_validator.py | 41 ------ Numbers/distance.py | 55 -------- Numbers/factorial.py | 33 ----- Numbers/fibonacci.py | 15 -- Numbers/happy_numbers.py | 40 ------ Numbers/next_prime.py | 25 ---- Numbers/pi.py | 10 -- Numbers/prime.py | 23 --- Numbers/tax.py | 15 -- Numbers/tile.py | 11 -- Numbers/unit.py | 91 ------------ README-scratch.md | 234 ------------------------------- README.md | 100 +++++-------- Text/caesar_cipher.py | 40 ------ Text/count_vowels.py | 19 --- Text/count_words.py | 26 ---- Text/palindrome.py | 12 -- Text/piglatin.py | 37 ----- Text/reverse.py | 11 -- Text/rss.py | 29 ---- Web/page_scraper.py | 33 ----- Web/time.py | 25 ---- 28 files changed, 38 insertions(+), 1151 deletions(-) delete mode 100644 Classes/product_inventory.py delete mode 100644 Classic Algorithms/collatz.py delete mode 100644 Numbers/alarm.py delete mode 100644 Numbers/binary_decimal.py delete mode 100644 Numbers/calc.py delete mode 100644 Numbers/change.py delete mode 100644 Numbers/credit_card_validator.py delete mode 100644 Numbers/distance.py delete mode 100644 Numbers/factorial.py delete mode 100644 Numbers/fibonacci.py delete mode 100644 Numbers/happy_numbers.py delete mode 100644 Numbers/next_prime.py delete mode 100644 Numbers/pi.py delete mode 100644 Numbers/prime.py delete mode 100644 Numbers/tax.py delete mode 100644 Numbers/tile.py delete mode 100644 Numbers/unit.py delete mode 100644 README-scratch.md delete mode 100644 Text/caesar_cipher.py delete mode 100644 Text/count_vowels.py delete mode 100644 Text/count_words.py delete mode 100644 Text/palindrome.py delete mode 100644 Text/piglatin.py delete mode 100644 Text/reverse.py delete mode 100644 Text/rss.py delete mode 100644 Web/page_scraper.py delete mode 100644 Web/time.py diff --git a/Classes/product_inventory.py b/Classes/product_inventory.py deleted file mode 100644 index df1ef1afa..000000000 --- a/Classes/product_inventory.py +++ /dev/null @@ -1,80 +0,0 @@ -""" -Product Inventory Project - Create an application which manages -an inventory of products. Create a product class which has a -price, id, and quantity on hand. Then create an inventory class -which keeps track of various products and can sum up the inventory -value. -""" - -class Product: - - def __init__(self, price, pid, qty): - """ - Class constructor that needs a price, a product id, - and quantity. - """ - self.price = price - self.pid = pid - self.qty = qty - - def update_qty(self, qty, method='add'): - """ - Updates the quantity of produts. By default, adds the - passed quantity. Pass method as 'subtract' to subtract - the quantity. - """ - if method == 'add': - self.qty += qty - elif method == 'subtract': - self.qty = max(0, self.qty - qty) - - def print_product(self): - """ - Prints a single product. - """ - print '%d\t%s\t%.02f each' % (self.pid, self.qty, self.price) - -class Inventory: - - def __init__(self): - """ - Initializes the class instance. - """ - self.products = [] # list to hold all products - - def add(self, product): - """ - Adds a passed Product to the list of products. - """ - self.products.append(product) - - def print_inventory(self): - """ - Prints the current inventory, and the total value - of products. - """ - value = 0 - for product in self.products: - print '%d\t%s\t%.02f each' % (product.pid, - product.qty, - product.price) - value += (product.price * product.qty) - print '\nTotal value: %.02f' % value - -if __name__ == '__main__': - p1 = Product(1.4, 123, 5) - p2 = Product(1, 3432, 100) - p3 = Product(100.4, 2342, 99) - - - i = Inventory() - i.add(p1) - i.add(p2) - i.add(p3) - i.print_inventory() - - p1.update_qty(10) - i.print_inventory() - - p1.update_qty(10, method='subtract') - i.print_inventory() diff --git a/Classic Algorithms/collatz.py b/Classic Algorithms/collatz.py deleted file mode 100644 index 3881ea11e..000000000 --- a/Classic Algorithms/collatz.py +++ /dev/null @@ -1,29 +0,0 @@ -""" -Collatz Conjecture - Start with a number n > 1. -Find the number of steps it takes to reach one using -the following process: If n is even, divide it by 2. -If n is odd, multiply it by 3 and add 1. -""" - -def main(): - try: - n = int(raw_input('Enter a number: ')) - except ValueError: - print 'Enter only an integer value, n > 1.' - - steps = 0 - - print '\n%d' % n, - - while n > 1: - if n % 2 == 0: - n /= 2 - else: - n = (n * 3) + 1 - steps += 1 - print ' -> %d' % n, - - print '\n\n%d steps take to reach ONE.' % steps - -if __name__ == '__main__': - main() diff --git a/Numbers/alarm.py b/Numbers/alarm.py deleted file mode 100644 index 2d7be3678..000000000 --- a/Numbers/alarm.py +++ /dev/null @@ -1,49 +0,0 @@ -""" -Alarm Clock - A simple clock where it plays a sound after -X number of minutes/seconds or at a particular time. - -Dependencies: -pyglet - pip install pyglet -""" - -import time -import winsound -import pyglet - -def play(hh, mm): - not_alarmed = 1 - - while(not_alarmed): - cur_time = list(time.localtime()) # get the time right now - hour = cur_time[3] # find the hour - minute = cur_time[4] # and the minute - if hour == hh and minute == mm: - song = pyglet.media.load('bin/sound.wav') - song.play() # play the sound - pyglet.app.run() - not_alarmed = 0 # stop the loop - -if __name__ == '__main__': - - print """ - 1. Play sound after X minutes - 2. Play sound at an exact time - """ - choice = input('What do you want to do? ') - - if choice == 1: - mins = input('How many minutes from now? ') - hh_from_now = mins / 60 # if minutes > 60, this will adjust the hours - mm_from_now = mins % 60 # and then the minutes - cur_time = list(time.localtime()) # get the time right now - hour = cur_time[3] # find the current hour - minute = cur_time[4] # and the current minute - hh = (hour + hh_from_now+(minute+mm_from_now)/60) % 24 # cycle through the clock if hh > 24 - mm = (minute + mm_from_now) % 60 # cycle through the clock if mm > 60 - play(hh, mm) - elif choice == 2: - hh = input('What hour do you want to wake up (0-23)? ') - mm = input('What minute do you want to wake up (0-59)? ') - play(hh, mm) - diff --git a/Numbers/binary_decimal.py b/Numbers/binary_decimal.py deleted file mode 100644 index b6846b726..000000000 --- a/Numbers/binary_decimal.py +++ /dev/null @@ -1,50 +0,0 @@ -""" -Binary to Decimal and Back Converter -Develop a converter to convert a decimal number to binary -or a binary number to its decimal equivalent. -""" - -def binary_to_decimal(binary): - """ - Converts a binary number into a decimal number. - """ - decimal = 0 - index = 0 - while binary > 0: - last = binary % 10 - binary = binary / 10 - decimal += (last * (2 ** index)) - index += 1 - return decimal - -def decimal_to_binary(decimal): - """ - Converts a decimal number into a binary number. - """ - binary = "" - remainders = [] - while decimal > 0: - remainders.append(str(decimal % 2)) - decimal /= 2 - remainders.reverse() - binary = "".join(remainders) - return 0 if binary == "" else binary - -if __name__ == '__main__': - print """ - 1. Binary to Decimal - 2. Decimal to Binary\n - """ - - choice = input("Make a choice: ") - - if choice == 1: - binary = input("Binary to convert: ") - print "The binary number %d in decimal is %d" % \ - (binary, binary_to_decimal(binary)) - elif choice == 2: - decimal = input("Decimal to convert: ") - print "The decimal number %d in binary is %s" % \ - (decimal, decimal_to_binary(decimal)) - else: - print "Invalid choice" diff --git a/Numbers/calc.py b/Numbers/calc.py deleted file mode 100644 index e6ea5f7f2..000000000 --- a/Numbers/calc.py +++ /dev/null @@ -1,17 +0,0 @@ -""" -Calculator - A simple calculator to do basic operators. -""" - -if __name__ == '__main__': - try: - num1 = int(raw_input("Number 1: ")) - num2 = int(raw_input("Number 2: ")) - except: - print 'Invalid input' - else: - op = raw_input("Operation (+, -, /, *): ") - if op not in '+-/*': - print "Invalid operator" - else: - print "%d %s %d = %d" % \ - (num1, op, num2, eval(str(num1) + op + str(num2))) diff --git a/Numbers/change.py b/Numbers/change.py deleted file mode 100644 index 8bce7273e..000000000 --- a/Numbers/change.py +++ /dev/null @@ -1,39 +0,0 @@ -# Change Return Program - The user enters a cost and -# then the amount of money given. The program will figure -# out the change and the number of quarters, dimes, nickels, -# pennies needed for the change. - -if __name__ == '__main__': - cost = input("What's the cost in dollars? ") - given = input("What's the amount of dollars given? ") - - change = given - cost - - print "\n" - if change < 0: - print "Please ask for $%.2f more from the customer." % (-change) # double negation - else: - print "The change is $%.2f." % change - - q = 0 # 0.25 - d = 0 # 0.10 - n = 0 # 0.05 - p = 0 # 0.01 - - change = int(change * 100) # let's talk about cents - - if change >= 25: - q = int(change / 25) - change = change % 25 - if change >= 10: - d = int(change / 10) - change = change % 10 - if change >= 5: - n = int(change / 5) - change = change % 5 - if change >= 1: - p = change # rest all change is in pennies - - print "Give the following change to the customer:" - print "Quarters: %d\tDimes: %d\tNickels: %d\tPennies: %d" \ - % (q, d, n, p) diff --git a/Numbers/credit_card_validator.py b/Numbers/credit_card_validator.py deleted file mode 100644 index fb4e8fc95..000000000 --- a/Numbers/credit_card_validator.py +++ /dev/null @@ -1,41 +0,0 @@ -""" -Credit Card Validator - Takes in a credit card number from a -common credit card vendor (Visa, MasterCard, American Express, -Discoverer) and validates it to make sure that it is a valid -number (look into how credit cards use a checksum). - -This program works with *most* credit card numbers. - -Uses Luhn Algorithm (http://en.wikipedia.org/wiki/Luhn_algorithm). - -1. From the rightmost digit, which is the check digit, moving -left, double the value of every second digit; if product of this -doubling operation is greater than 9 (e.g., 7 * 2 = 14), then -sum the digits of the products (e.g., 10: 1 + 0 = 1, 14: 1 + 4 = 5). - -2. Add together doubled digits with the undoubled digits from the -original number. - -3. If the total modulo 10 is equal to 0 (if the total ends in zero) -then the number is valid according to the Luhn formula; else it is -not valid. -""" - -if __name__ == '__main__': - number = raw_input('Enter the credit card number of check: ').replace(' ', '') - #if not number.isdigit(): - # raise Exception('Invalid credit card number. Make sure it\'s all digits (with optional spaces in between).' - - digits = [int(char) for char in number] - - # double alternate digits (step 1) - doubled = [(digit * 2) if (i % 2 == 0) else digit \ - for (i, digit) in enumerate(digits)] # i <3 python - # sum digits of number > 10 (step 2) - summed = [num if num < 10 else sum([int(dig) for dig in str(num)]) \ - for num in doubled] # i <3 python ** 2 - # step 3 - if sum(summed) % 10 == 0: - print 'The number is valid' - else: - print 'The number is invalid' diff --git a/Numbers/distance.py b/Numbers/distance.py deleted file mode 100644 index 65cfc9a9b..000000000 --- a/Numbers/distance.py +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python - -""" -Distance Between Two Cities - Calculates the distance between -two cities and allows the user to specify a unit of distance. -This program may require finding coordinates for the cities -like latitude and longitude. - -Uses the Haversine formula -(http://www.movable-type.co.uk/scripts/latlong.html) - -Dependencies: -geopy - pip install geopy -""" - -from geopy import geocoders # to find lat/lon for the city -import math - -R = 6373 # km - -city1 = raw_input('Enter city 1: ') -city2 = raw_input('Enter city 2: ') -unit = raw_input('Enter unit of distance (Enter "K" for KM or "M" for MI): ').lower() - -if unit in 'km': - - g = geocoders.GoogleV3() - - try: - city1, (lat1, lon1) = g.geocode(city1) - city2, (lat2, lon2) = g.geocode(city2) - except: - raise Exception('Unable to locate the citites. Check the city names.') - - # convert decimal locations to radians - lat1 = math.radians(lat1) - lon1 = math.radians(lon1) - lat2 = math.radians(lat2) - lon2 = math.radians(lon2) - - # start haversne formula - dlon = lon2 - lon1 - dlat = lat2 - lat1 - a = (math.sin(dlat/2) ** 2) + math.cos(lat1) * math.cos(lat2) * \ - (math.sin(dlon/2) ** 2) - c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)) - d = R * c - - if unit == 'k': - print 'Distance between %s and %s is %.04f km' % (city1, city2, d) - else: - print 'Distance between %s and %s is %.04f mi' % (city1, city2, d / 1.60934) -else: - print 'Invalid unit input!' diff --git a/Numbers/factorial.py b/Numbers/factorial.py deleted file mode 100644 index cd8e753fc..000000000 --- a/Numbers/factorial.py +++ /dev/null @@ -1,33 +0,0 @@ -""" -Factorial Finder - The Factorial of a positive integer, n, -is defined as the product of the sequence n, n-1, n-2, ...1 -and the factorial of zero, 0, is defined as being 1. Solve -this using both loops and recursion. -""" - -def fact_loop(n): - """ - Returns the factorial of a given positive, non-zero integer - using loops. - """ - fact = 1 - while n > 0: - fact *= n - n -= 1 - return fact - -def fact_recursion(n): - """ - Returns the factorial of a given positive, non-zero integer - using recursion. - """ - return 1 if n == 0 else n * fact_recursion(n - 1) # if user as ternary operator - -if __name__ == '__main__': - n = input('Enter a positive number: ') - - if n >= 0: - print 'Factorial of %d by loops is %d' % (n, fact_loop(n)) - print 'Factorial of %d by recursion is %d' % (n, fact_recursion(n)) - else: - print 'Not a valid number' diff --git a/Numbers/fibonacci.py b/Numbers/fibonacci.py deleted file mode 100644 index 2c239b48d..000000000 --- a/Numbers/fibonacci.py +++ /dev/null @@ -1,15 +0,0 @@ -# -*- coding: cp1252 -*- -# Fibonacci Sequence - Enter a number and have the -# program generate the Fibonacci sequence to that number -# or to the Nth number - -n = int(raw_input('How many numbers do you need? ')) -series = [1] - -while len(series) < n: - if len(series) == 1: - series.append(1) - else: - series.append(series[-1] + series[-2]) - -print series diff --git a/Numbers/happy_numbers.py b/Numbers/happy_numbers.py deleted file mode 100644 index a50f05f92..000000000 --- a/Numbers/happy_numbers.py +++ /dev/null @@ -1,40 +0,0 @@ -""" -Happy Numbers - A happy number is defined by the -following process. Starting with any positive integer, -replace the number by the sum of the squares of its -digits, and repeat the process until the number equals -1 (where it will stay), or it loops endlessly in a -cycle which does not include 1. Those numbers for which -this process ends in 1 are happy numbers, while those -that do not end in 1 are unhappy numbers. Take an input -number from user, and find first 8 happy numbers from -that input. -""" - -NUMBERS_REQUIRED = 8 # number of happy numbers required - -def is_happy_number(num): - seen = [] - while True: - sum_digits = sum(int(digit) ** 2 for digit in str(num)) - if sum_digits == 1: - return True - elif sum_digits in seen: - return False - else: - num = sum_digits - seen.append(num) - -if __name__ == '__main__': - - happies = [] # list of happy numbers found - - num = input('Start at: ') - - while len(happies) != NUMBERS_REQUIRED: - if is_happy_number(num): - happies.append(num) - num += 1 - - print happies - diff --git a/Numbers/next_prime.py b/Numbers/next_prime.py deleted file mode 100644 index 3d479bd07..000000000 --- a/Numbers/next_prime.py +++ /dev/null @@ -1,25 +0,0 @@ -# Next Prime Number - Have the program find prime -# numbers until the user chooses to stop asking for -# the next one. - -def next_prime(current): - next_prime = current + 1 # start checking for primes 1 number after the current one - i = 2 - while next_prime > i: # check with numbers up to next_prime - 1 - if next_prime % i == 0: # if number is divisible - next_prime += 1 # ready to check the next number - i = 2 # reset i to check divisibility again from 2 - else: - i += 1 # increment the divisor - return next_prime - -if __name__ == '__main__': - current_prime = 2 - while True: - response = raw_input('Do you want the next prime? (Y/N) ') - - if response.lower().startswith('y'): - print current_prime - current_prime = next_prime(current_prime) - else: - break diff --git a/Numbers/pi.py b/Numbers/pi.py deleted file mode 100644 index 027c63e50..000000000 --- a/Numbers/pi.py +++ /dev/null @@ -1,10 +0,0 @@ -# Find PI to the Nth Digit - -from math import * - -digits = raw_input('Enter number of digits to round PI to: ') - -# print ('{0:.%df}' % min(20, int(digits))).format(math.pi) # nested string formatting - -# calculate pi using Machin-like Formula -print ('{0:.%df}' % min(30, int(digits))).format(4 * (4 * atan(1.0/5.0) - atan(1.0/239.0))) diff --git a/Numbers/prime.py b/Numbers/prime.py deleted file mode 100644 index ffa1ea83c..000000000 --- a/Numbers/prime.py +++ /dev/null @@ -1,23 +0,0 @@ -# Prime Factorization - Have the user enter a number -# and find all Prime Factors (if there are any) and -# display them. - - -def is_a_prime(x): - for i in range(2, x): - if x % i == 0: - return False - return True - -# standard boilerplate -if __name__ == '__main__': - n = int(raw_input('Enter the number to find prime factors of: ')) - - factors = [] - - for i in range(2, n + 1): - while n % i == 0: # Thanks @madsulrik - if is_a_prime(i): - factors.append(i) - n /= i - print factors diff --git a/Numbers/tax.py b/Numbers/tax.py deleted file mode 100644 index 76ccf776a..000000000 --- a/Numbers/tax.py +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env python - -TAXES = { - 'WA': 9.5, - 'CA': 7.5, - 'FL': 10.8, - 'OH': 7.8 -} - -state = raw_input('What\'s your state (WA / CA / FL / OH)?: ') -cost = float(raw_input('And the cost?: ')) - -tax = TAXES[state] / 100 * cost - -print 'Cost: %.02f\nTax: %.02f\n----------\nTotal: %.02f' % (cost, tax, cost + tax) \ No newline at end of file diff --git a/Numbers/tile.py b/Numbers/tile.py deleted file mode 100644 index 1b5b23408..000000000 --- a/Numbers/tile.py +++ /dev/null @@ -1,11 +0,0 @@ -# Find Cost of Tile to Cover W x H Floor - Calculate -# the total cost of tile it would take to cover a floor -# plan of width and height, using a cost entered by the user. - -# Use input as the input can be integer and float -cost = input("What's the cost per sq. feet? ") -width = input("What's the width of the floor? ") -height = input("What's the height of the floor? ") - -print "The total cost is $%.2f for %.2f square feet" \ - % (width * height * cost, width * height) diff --git a/Numbers/unit.py b/Numbers/unit.py deleted file mode 100644 index 383044e99..000000000 --- a/Numbers/unit.py +++ /dev/null @@ -1,91 +0,0 @@ -""" -Unit Converter (temp, currency, volume, mass and more) - Converts -various units between one another. The user enters the type of unit -being entered, the type of unit they want to convert to and then -the value. The program will then make the conversion. -""" - -from __future__ import division -from urllib2 import urlopen -import json - -# 1 (std unit) = these many units -MULTIPLIERS_TO_STD = { - 'length': { - 'cm': 0.01, - 'm': 1, # std unit - 'km': 1000, - 'mi': 1609.34, - 'ft': 0.3048 - }, - 'temp': { - 'C': 1, # std unit - 'F': 33.8 - } -} - -# These many units = 1 (std unit) -MULTIPLIERS_FROM_STD = { - 'length': { - 'cm': 100, - 'm': 1, # std unit - 'km': 0.001, - 'mi': 0.000621371, - 'ft': 3.28084 - }, - 'temp': { - 'C': 1, # std unit - 'F': -17.2222 - } -} - - -def get_user_input(choice): - units = ', '.join(MULTIPLIERS_TO_STD[choice].keys()) - source_unit = raw_input('\nEnter source unit (%s): ' % units) - source_val = float(raw_input('How many %s\'s? ' % source_unit)) - convert_to = raw_input('Convert to? (%s): ' % units) - return source_unit, source_val, convert_to - -def get_currency(source_unit, source_val, convert_to): - url = 'http://rate-exchange.appspot.com/currency?from=%s&to=%s&q=%s' % ( - source_unit, convert_to, str(source_val)) - content = urlopen(url).read() - return json.loads(content)['v'] - -def main(): - print """Unit Converter - 1. Length - 2. Temperature - 3. Currency""" - - choice = int(raw_input('What do you want to convert: ')) - - if choice == 1: - source_unit, source_val, convert_to = get_user_input('length') - print '%f%s = %f%s' % (source_val, source_unit, - source_val * \ - MULTIPLIERS_TO_STD['length'][source_unit] * \ - MULTIPLIERS_FROM_STD['length'][convert_to], \ - convert_to) - elif choice == 2: - source_unit, source_val, convert_to = get_user_input('temp') - if (source_unit, convert_to) == ('F', 'C'): # F -> C - value = (source_val - 32) * (5/9) - elif (source_unit, convert_to) == ('C', 'F'): # C -> F - value = (source_val * (9/5)) + 32 - else: - value = source_val - print '%f%s = %f%s' % (source_val, source_unit, - value, convert_to) - - elif choice == 3: - source_unit = raw_input('\nEnter source currency (eg USD, INR etc): ') - source_val = float(raw_input('How many %s\'s? ' % source_unit)) - convert_to = raw_input('Convert to? (eg USD, INR etc): ') - print '%f%s = %f%s' % (source_val, source_unit, - get_currency(source_unit, source_val, convert_to), - convert_to) - -if __name__ == '__main__': - main() diff --git a/README-scratch.md b/README-scratch.md deleted file mode 100644 index 9be6373b3..000000000 --- a/README-scratch.md +++ /dev/null @@ -1,234 +0,0 @@ -Mega Project List -======== - -Numbers ---------- - -**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. - -**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. - -**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. - -**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. - -**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. - -**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. - -**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. - -**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. - -**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. - -**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. - -**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. - -**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. - -**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). - -**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. - -**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. - -**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. - -**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. - -**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* - -**Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. - -Classic Algorithms ------------------ - -**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. - -**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort. - -**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. - -**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). - - -Graph --------- -**Graph from links** - Create a program that will create a graph or network from a series of links. - -**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. - -**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not. - -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. - -Data Structures ---------- - -**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. - - -Text ---------- - -**Reverse a String** - Enter a string and the program will reverse it and print it out. - -**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. - -**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. - -**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” - -**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. - -**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* - -**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. - -**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* - -**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* - -**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* - -**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. - -**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. - -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* - -**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](http://daringfireball.net/projects/markdown/syntax).* - -**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. - -Networking ---------- - -**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. - -**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. - -**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. - -**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. - -**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* - -**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. - -**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. - -Classes ---------- - -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. - -**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. - -**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. - -**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. - -**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. - -**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. - -**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. - -**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. - -**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. - -Threading ---------- - -**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. - -**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. - -Web ---------- - -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* - -**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. - -**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* - -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. - -**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* - -**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. - -**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. - -**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* - -**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. - -**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. - -Files ---------- - -**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. - -**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. - -**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. - -**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* - -**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* - -**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. - -**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* - -Databases ---------- - -**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. - -**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. - -**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. - -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* - -**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* - -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. - -**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. - -**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. - -Graphics and Multimedia ---------- - -**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* - -**Stream Video from Online** - Try to create your own online streaming video player. - -**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. - -**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* - -**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* - -Security -------------- - -**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. - -=============================================== - -Sources -======= - -* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -* [Rosetta Code](http://rosettacode.org/) diff --git a/README.md b/README.md index afd482ad6..4e14db857 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,21 @@ Mega Project List ======== -A list of practical projects that anyone can solve in any programming language (See [solutions](https://github.com/thekarangoel/Projects-Solutions)). These projects are divided in multiple categories, and each category has it's own folder. +A list of practical projects that anyone can solve in any programming language (See [solutions](https://github.com/thekarangoel/Projects-Solutions)). These projects are divided in multiple categories, and each category has it's own folder. + +To get started, simply fork this repo. -#### [RECOGNITION](https://github.com/thekarangoel/Projects/tree/master/RECOGNITION) +## [CONTRIBUTING](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) -Ever since this repo was created, it has been in the top list on GH. Be it the daily or weekly list! This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. In the last week of July, *Projects* was in the monthly top list on GH. +See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute **solutions** (will be published in this [repo](https://github.com/thekarangoel/Projects-Solutions)) to existing problems, **add new projects** or remove existing ones. Make sure you follow all instructions properly. -![July 25, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-monthly-2013-07-25.png) -=============================== +## [Solutions](https://github.com/thekarangoel/Projects-Solutions) -### [CONTRIBUTING](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) +You can find implementations of these projects in many other languages by other users in [this repo](https://github.com/thekarangoel/Projects-Solutions). -See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions (will be published in this [repo](https://github.com/thekarangoel/Projects-Solutions)) to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. -================================ - -### [Solutions](https://github.com/thekarangoel/Projects-Solutions) - -You can find implementations of these projects in many other languages by other users in this [repo](https://github.com/thekarangoel/Projects-Solutions). - -================================ - -### Donations +## Donations If *Projects* has helped you in any way, and you'd like to help the developer, please consider donating. @@ -35,57 +27,42 @@ If *Projects* has helped you in any way, and you'd like to help the developer, p ================================ -Some details about this repo: - -* I will use Python to solve these. Why? Because I want to learn the language quickly. -* I have no interest in making games, so I'm excluding those from the list below. -* I'm not interested in networking, so I *might* skip all (or some) of them. -* The projects will not be made in the order posted. -* I may not be able to complete all of them. -* My method of solving them may not be the best. If you do not like my algorithm(s), please add a comment for the file/commit or open an issue, and I'll try to improve. - -I will link to each project that I complete. Some will be in this same repo, some bigger ones will have dedicated repos. - -To get started, fork this repo, delete this README and rename [*README-scratch.md*](https://github.com/thekarangoel/Projects/blob/master/README-scratch.md) to *README.md*. - -=============================== - Numbers --------- -[**Find PI to the Nth Digit**](https://github.com/thekarangoel/Projects/blob/master/Numbers/pi.py) - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. +**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. -[**Fibonacci Sequence**](https://github.com/thekarangoel/Projects/blob/master/Numbers/fibonacci.py) - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. +**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. -[**Prime Factorization**](https://github.com/thekarangoel/Projects/blob/master/Numbers/prime.py) - Have the user enter a number and find all Prime Factors (if there are any) and display them. +**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. -[**Next Prime Number**](https://github.com/thekarangoel/Projects/blob/master/Numbers/next_prime.py) - Have the program find prime numbers until the user chooses to stop asking for the next one. +**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. -[**Find Cost of Tile to Cover W x H Floor**](https://github.com/thekarangoel/Projects/blob/master/Numbers/tile.py) - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. +**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. **Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. -[**Change Return Program**](https://github.com/thekarangoel/Projects/blob/master/Numbers/change.py) - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. +**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. -[**Binary to Decimal and Back Converter**](https://github.com/thekarangoel/Projects/blob/master/Numbers/binary_decimal.py) - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. +**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. -[**Calculator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/calc.py) - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. +**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. -[**Unit Converter (temp, currency, volume, mass and more)**](https://github.com/thekarangoel/Projects/blob/master/Numbers/unit.py) - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. +**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. -[**Alarm Clock**](https://github.com/thekarangoel/Projects/blob/master/Numbers/alarm.py) - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. +**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. -[**Distance Between Two Cities**](https://github.com/thekarangoel/Projects/blob/master/Numbers/distance.py) - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. +**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. -[**Credit Card Validator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/credit_card_validator.py) - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). +**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). -[**Tax Calculator**](https://github.com/karan/Projects/blob/master/Numbers/tax.py) - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. +**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. -[**Factorial Finder**](https://github.com/thekarangoel/Projects/blob/master/Numbers/factorial.py) - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. +**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. **Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. -[**Happy Numbers**](https://github.com/thekarangoel/Projects/blob/master/Numbers/happy_numbers.py) - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Take an input number from user, and find first 8 happy numbers from that input. +**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* @@ -94,7 +71,7 @@ Numbers Classic Algorithms ----------------- -[**Collatz Conjecture**](https://github.com/thekarangoel/Projects/blob/master/Classic%20Algorithms/collatz.py) - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. +**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. **Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort. @@ -102,9 +79,9 @@ Classic Algorithms **Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). -Graphs ---------- +Graph +-------- **Graph from links** - Create a program that will create a graph or network from a series of links. **Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. @@ -118,22 +95,23 @@ Data Structures **Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. + Text --------- -[**Reverse a String**](https://github.com/thekarangoel/Projects/blob/master/Text/reverse.py) - Enter a string and the program will reverse it and print it out. +**Reverse a String** - Enter a string and the program will reverse it and print it out. -[**Pig Latin**](https://github.com/thekarangoel/Projects/blob/master/Text/piglatin.py) - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. +**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. -[**Count Vowels**](https://github.com/thekarangoel/Projects/blob/master/Text/count_vowels.py) - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. +**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. -[**Check if Palindrome**](https://github.com/thekarangoel/Projects/blob/master/Text/palindrome.py) - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” +**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” -[**Count Words in a String**](https://github.com/thekarangoel/Projects/blob/master/Text/count_words.py) - Counts the number of individual words in a string and display the top 5/10 most used words. +**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. **Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* -[**RSS Feed Creator**](https://github.com/thekarangoel/Projects/blob/master/Text/rss.py) - Given a link to RSS/Atom Feed, get all posts and display them. +**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. **Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* @@ -171,7 +149,7 @@ Networking Classes --------- -[**Product Inventory Project**](https://github.com/thekarangoel/Projects/blob/master/Classes/product_inventory.py) - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. **Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. @@ -199,15 +177,15 @@ Threading Web --------- -[**Page Scraper**](https://github.com/thekarangoel/Projects/blob/master/Web/page_scraper.py) - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* **Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. **Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* -[**Get Atomic Time from Internet Clock**](https://github.com/thekarangoel/Projects/blob/master/Web/time.py) - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. -[**Fetch Current Weather**](https://github.com/thekarangoel/GAE-weather) - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* +**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* **Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. @@ -271,7 +249,7 @@ Graphics and Multimedia Security ------------- -**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 26. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 26th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 26 keys. +**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. =============================================== @@ -280,5 +258,3 @@ Sources * [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) * [Rosetta Code](http://rosettacode.org/) -* Lots and lots of contributors. Thank you all. - diff --git a/Text/caesar_cipher.py b/Text/caesar_cipher.py deleted file mode 100644 index 5e2698679..000000000 --- a/Text/caesar_cipher.py +++ /dev/null @@ -1,40 +0,0 @@ -""" -Caesar Cipher - Enter the cipher number and the program will "encrypt" them with -the Caesar cipher (a.k.a. ROT #). Type the word "exit" when you're finished. -""" - -while True: - try: - cipher = int(raw_input("Enter the cipher number: ")) - break - except ValueError: - print "I need a valid integer, please." - -print "Enter the text to be encoded." -print "Enter \"exit\" to leave." - -if __name__ == '__main__': - while True: - text = raw_input("> ") - encoded = [] - - if text.lower() == "exit": - break - - for letter in text: - if letter.isalpha(): - is_upper = False - - if letter == letter.upper(): - is_upper = True - letter = letter.lower() - - value = (ord(letter) - 97 + cipher) % 26 - if is_upper: - value -= 32 - - encoded.append(chr(value + 97)) - else: - encoded.append(letter) - - print ''.join(encoded) diff --git a/Text/count_vowels.py b/Text/count_vowels.py deleted file mode 100644 index fe55626f1..000000000 --- a/Text/count_vowels.py +++ /dev/null @@ -1,19 +0,0 @@ -""" -Count Vowels - Enter a string and the program counts -the number of vowels in the text. For added complexity -have it report a sum of each vowel found. -""" - -from collections import defaultdict - -if __name__ == '__main__': - string = raw_input('Enter a string: ').lower() - - vowels = ['a', 'e', 'i', 'o', 'u'] - counts = defaultdict(int) - - for char in string: - if char in vowels: - counts[char] += 1 - - print counts.items() diff --git a/Text/count_words.py b/Text/count_words.py deleted file mode 100644 index afe0daccc..000000000 --- a/Text/count_words.py +++ /dev/null @@ -1,26 +0,0 @@ -""" -Count Words in a String - Counts the number of individual -words in a string and display the top 5/10 most used words. -""" - -from collections import defaultdict -import operator - -if __name__ == '__main__': - text = raw_input('Enter some text: \n') - words = text.split() # very naive approach, split at space - - counts = defaultdict(int) # no need to check existence of a key - - # find count of each word - for word in words: - counts[word] += 1 - - # sort the dict by the count of each word, returns a tuple (word, count) - sorted_counts = sorted(counts.iteritems(), \ - key=operator.itemgetter(1), \ - reverse=True) - - # print top 5 words - for (word,count) in sorted_counts[:5]: # thanks @jrwren for this! - print (word, count) diff --git a/Text/palindrome.py b/Text/palindrome.py deleted file mode 100644 index 8e9cf3a38..000000000 --- a/Text/palindrome.py +++ /dev/null @@ -1,12 +0,0 @@ -""" -Check if Palindrome - Checks if the string entered -by the user is a palindrome. That is that it reads -the same forwards as backwards like "racecar" -""" - -string = raw_input('Enter a string: ').lower() - -if string == string[::-1]: - print '%s is a palindrome' % string -else: - print '%s is not a palindrome' % string diff --git a/Text/piglatin.py b/Text/piglatin.py deleted file mode 100644 index 37313a6c2..000000000 --- a/Text/piglatin.py +++ /dev/null @@ -1,37 +0,0 @@ -""" -Pig Latin - Pig Latin is a game of alterations played -on the English language game. To create the Pig Latin -form of an English word the initial consonant sound is -transposed to the end of the word and an ay is affixed -(Ex.: "banana" would yield anana-bay). Read Wikipedia -for more information on rules. -""" - -word = raw_input('What\'s your word? ').lower() -vowels = 'aeiou' - -pig = 'ay' - -consonant = [] -count = 0 -copy = [c for c in word] - -for i in range(len(copy) - 1): - count = i - if copy[i] in vowels: - break - else: - consonant.append(copy[i]) - -new = word[count:] + "".join(consonant) + pig - -""" -first = word[0] - -if first in vowels: - new = word + pig -else: - new = word[1:] + first + pig -""" - -print new diff --git a/Text/reverse.py b/Text/reverse.py deleted file mode 100644 index 3a1296545..000000000 --- a/Text/reverse.py +++ /dev/null @@ -1,11 +0,0 @@ -# -*- coding: cp1252 -*- -""" -Reverse a String - Enter a string and the program -will reverse it and print it out. -""" - -string = raw_input("Whatchu wanna say to me? ") -copy = [c for c in string] -for i in range(len(copy) / 2): - copy[i], copy[len(copy) - i - 1] = copy[len(copy) - i - 1], copy[i] -print "You say %s, I say %s" % (string, ''.join(copy)) diff --git a/Text/rss.py b/Text/rss.py deleted file mode 100644 index 25f8c8f1d..000000000 --- a/Text/rss.py +++ /dev/null @@ -1,29 +0,0 @@ -""" -RSS Feed Creator - Given a link to RSS/Atom Feed, -get all posts and display them. -""" - -import re -import urllib2 - - -def main(): - """ - Takes in a Feedburned feed URL. - - Eg: http://feeds.feedburner.com/WebDesignLedger - """ - feed_url = raw_input('Enter Feedburner RSS URL: ') - content = urllib2.urlopen(feed_url).read() # get the source code of feed - - link_pattern = re.compile('(.*)') - title_pattern = re.compile('(.*)') - - links = re.findall(link_pattern, content)[1:] # skip blog url - titles = re.findall(title_pattern, content)[1:] # skip the page title - - for (link, title) in zip(links, titles): - print '{0}\n{1}\n'.format(title, link) - -if __name__ == '__main__': - main() diff --git a/Web/page_scraper.py b/Web/page_scraper.py deleted file mode 100644 index ccfd191fa..000000000 --- a/Web/page_scraper.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: cp1252 -*- -""" -Page Scraper - Create an application which connects to a -site and pulls out all links, or images, and saves them to -a list. Optional: Organize the indexed content and don�t -allow duplicates. Have it put the results into an easily -searchable index file. -""" - -import urllib2 -from bs4 import BeautifulSoup - - -def print_list(stuff): - print '\n'.join(stuff) - print '\n====================\n' - -if __name__ == '__main__': - - url = raw_input('Enter a URL: ') - - choice = input('What to scrape?\n1. Links\n2. Images\n3. Both\n') - - soup = BeautifulSoup(urllib2.urlopen(url).read()) - - if choice == 1 or choice == 3: - urls = [link.get('href') for link in soup.findAll('a')] - print 'URLs:' - print_list(urls) - if choice == 2 or choice ==3: - images = [image['src'] for image in soup.findAll("img")] - print 'Images:' - print_list(images) diff --git a/Web/time.py b/Web/time.py deleted file mode 100644 index 073d75f47..000000000 --- a/Web/time.py +++ /dev/null @@ -1,25 +0,0 @@ -""" -Get Atomic Time from Internet Clock - This program will get -the true atomic time from an atomic time clock on the Internet. -Use any one of the atomic clocks returned by a simple Google search. -""" - -import re -from urllib2 import urlopen - - -def main(): - url = 'http://time.is/just' - content = urlopen(url).read() - pattern = re.compile('
(.*)(AM|PM)
') - - find_match = re.search(pattern, content) - - location_pat = re.compile('

(.*)

') - location_match = re.search(location_pat, content) - - print 'The time in %s is %s %s' % \ - (location_match.group(1), find_match.group(1), find_match.group(2)) - -if __name__ == '__main__': - main() From 76cfa898a99e4eadf9750ea11b03abf05bc66000 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 13 May 2014 08:27:44 -0700 Subject: [PATCH 086/107] update contributing instructions --- CONTRIBUTING.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 153e83ed4..19b982301 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,14 +22,13 @@ Please **do not send pull requests for replacing my code**. If you'd like to con - Save/Commit the README.md file. - Send a pull request for this commit ONLY - ie, the commit to the [solutions repo](https://github.com/thekarangoel/Projects-Solutions)! - -===================================== + ## Projects If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. -It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md*, in *README.md* file in the relevant category folder, and in the [Solutions *README.md* file](https://github.com/thekarangoel/Projects-Solutions/blob/master/README.md) +It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README.md* file in the relevant **category folder**, and in the [Solutions *README.md* file](https://github.com/thekarangoel/Projects-Solutions/blob/master/README.md) If you're copying a project from some other webpage, you **MUST** link to it in the *Sources* section at the bottom of repo's *README.md* and *README-scratch.md*. From 219abb0540a1d472488320696725583e473e1951 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 11 Jun 2014 07:06:31 -0700 Subject: [PATCH 087/107] remove btc as a way of donation --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 4e14db857..738dcf17a 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ Mega Project List ======== -A list of practical projects that anyone can solve in any programming language (See [solutions](https://github.com/thekarangoel/Projects-Solutions)). These projects are divided in multiple categories, and each category has it's own folder. - +A list of practical projects that anyone can solve in any programming language (See [solutions](https://github.com/thekarangoel/Projects-Solutions)). These projects are divided in multiple categories, and each category has it's own folder. + To get started, simply fork this repo. ## [CONTRIBUTING](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) @@ -14,13 +14,10 @@ See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/ You can find implementations of these projects in many other languages by other users in [this repo](https://github.com/thekarangoel/Projects-Solutions). - ## Donations If *Projects* has helped you in any way, and you'd like to help the developer, please consider donating. -**- BTC: [19dLDL4ax7xRmMiGDAbkizh6WA6Yei2zP5](http://i.imgur.com/bAQgKLN.png)** - **- Gittip: [https://www.gittip.com/karan/](https://www.gittip.com/karan/)** **- Flattr: [https://flattr.com/profile/thekarangoel](https://flattr.com/profile/thekarangoel)** From 3d804d724969a803b3fb62df6c53d40ef6327543 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 11 Jun 2014 07:07:10 -0700 Subject: [PATCH 088/107] remove folders to simply structure --- Classes/README.md | 20 --------------- Classic Algorithms/README.md | 10 -------- Data Structures/README.md | 4 --- Databases/README.md | 18 ------------- Files/README.md | 16 ------------ Graphics and Multimedia/README.md | 12 --------- Graphs/README.md | 10 -------- Networking/README.md | 16 ------------ Numbers/README.md | 42 ------------------------------- Security/README.md | 4 --- Text/README.md | 32 ----------------------- Threading/README.md | 6 ----- Web/README.md | 22 ---------------- 13 files changed, 212 deletions(-) delete mode 100644 Classes/README.md delete mode 100644 Classic Algorithms/README.md delete mode 100644 Data Structures/README.md delete mode 100644 Databases/README.md delete mode 100644 Files/README.md delete mode 100644 Graphics and Multimedia/README.md delete mode 100644 Graphs/README.md delete mode 100644 Networking/README.md delete mode 100644 Numbers/README.md delete mode 100644 Security/README.md delete mode 100644 Text/README.md delete mode 100644 Threading/README.md delete mode 100644 Web/README.md diff --git a/Classes/README.md b/Classes/README.md deleted file mode 100644 index 1e45760a8..000000000 --- a/Classes/README.md +++ /dev/null @@ -1,20 +0,0 @@ -Classes ---------- - -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. - -**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. - -**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. - -**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. - -**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. - -**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. - -**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. - -**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. - -**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. \ No newline at end of file diff --git a/Classic Algorithms/README.md b/Classic Algorithms/README.md deleted file mode 100644 index bd88e10d6..000000000 --- a/Classic Algorithms/README.md +++ /dev/null @@ -1,10 +0,0 @@ -Classic Algorithms ------------------ - -**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. - -**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort. - -**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. - -**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). diff --git a/Data Structures/README.md b/Data Structures/README.md deleted file mode 100644 index ec861fe6a..000000000 --- a/Data Structures/README.md +++ /dev/null @@ -1,4 +0,0 @@ -Data Structures ---------- - -**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. \ No newline at end of file diff --git a/Databases/README.md b/Databases/README.md deleted file mode 100644 index 48fe04a91..000000000 --- a/Databases/README.md +++ /dev/null @@ -1,18 +0,0 @@ -Databases ---------- - -**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. - -**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. - -**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. - -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* - -**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* - -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. - -**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. - -**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. \ No newline at end of file diff --git a/Files/README.md b/Files/README.md deleted file mode 100644 index b564c730b..000000000 --- a/Files/README.md +++ /dev/null @@ -1,16 +0,0 @@ -Files ---------- - -**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. - -**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. - -**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. - -**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* - -**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* - -**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. - -**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* \ No newline at end of file diff --git a/Graphics and Multimedia/README.md b/Graphics and Multimedia/README.md deleted file mode 100644 index f104dac4c..000000000 --- a/Graphics and Multimedia/README.md +++ /dev/null @@ -1,12 +0,0 @@ -Graphics and Multimedia ---------- - -**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* - -**Stream Video from Online** - Try to create your own online streaming video player. - -**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. - -**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* - -**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* \ No newline at end of file diff --git a/Graphs/README.md b/Graphs/README.md deleted file mode 100644 index 759d41453..000000000 --- a/Graphs/README.md +++ /dev/null @@ -1,10 +0,0 @@ -Graphs ------- - -**Graph from links** - Create a program that will create a graph or network from a series of links. - -**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. - -**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not. - -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. diff --git a/Networking/README.md b/Networking/README.md deleted file mode 100644 index 81565e25e..000000000 --- a/Networking/README.md +++ /dev/null @@ -1,16 +0,0 @@ -Networking ---------- - -**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. - -**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. - -**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. - -**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. - -**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* - -**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. - -**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. \ No newline at end of file diff --git a/Numbers/README.md b/Numbers/README.md deleted file mode 100644 index 2253abd86..000000000 --- a/Numbers/README.md +++ /dev/null @@ -1,42 +0,0 @@ -Numbers ---------- - -**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. - -**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. - -**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. - -**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. - -**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. - -**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. - -**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. - -**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. - -**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. - -**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. - -**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. - -**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. - -**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). - -**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. - -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. - -**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. - -**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. - -**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. - -**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* - -**Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. diff --git a/Security/README.md b/Security/README.md deleted file mode 100644 index 3d6941ab5..000000000 --- a/Security/README.md +++ /dev/null @@ -1,4 +0,0 @@ -Security -------------- - -**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 26. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 26th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 26 keys. diff --git a/Text/README.md b/Text/README.md deleted file mode 100644 index 48916ccae..000000000 --- a/Text/README.md +++ /dev/null @@ -1,32 +0,0 @@ -Text ---------- - -**Reverse a String** - Enter a string and the program will reverse it and print it out. - -**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. - -**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. - -**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” - -**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. - -**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* - -**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. - -**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* - -**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* - -**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* - -**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. - -**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. - -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* - -**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](http://daringfireball.net/projects/markdown/syntax).* - -**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. \ No newline at end of file diff --git a/Threading/README.md b/Threading/README.md deleted file mode 100644 index 17fdcd043..000000000 --- a/Threading/README.md +++ /dev/null @@ -1,6 +0,0 @@ -Threading ---------- - -**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. - -**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. \ No newline at end of file diff --git a/Web/README.md b/Web/README.md deleted file mode 100644 index cba41d524..000000000 --- a/Web/README.md +++ /dev/null @@ -1,22 +0,0 @@ -Web ---------- - -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* - -**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. - -**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* - -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. - -**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* - -**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. - -**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. - -**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* - -**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. - -**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. \ No newline at end of file From 7a098a3d9cb4f59e712e07c953d633d24c84ee41 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 11 Jun 2014 07:08:06 -0700 Subject: [PATCH 089/107] update steps for contributing --- CONTRIBUTING.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 19b982301..482a7924a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,14 +22,12 @@ Please **do not send pull requests for replacing my code**. If you'd like to con - Save/Commit the README.md file. - Send a pull request for this commit ONLY - ie, the commit to the [solutions repo](https://github.com/thekarangoel/Projects-Solutions)! - + ## Projects If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. -It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README.md* file in the relevant **category folder**, and in the [Solutions *README.md* file](https://github.com/thekarangoel/Projects-Solutions/blob/master/README.md) +It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in the [Solutions *README.md* file](https://github.com/thekarangoel/Projects-Solutions/blob/master/README.md) If you're copying a project from some other webpage, you **MUST** link to it in the *Sources* section at the bottom of repo's *README.md* and *README-scratch.md*. - -If you skip any step(s), I will not merge the changes! From 1aa5440698ed1ab99319b6717cf74a83b95e82ba Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 11 Jun 2014 07:13:36 -0700 Subject: [PATCH 090/107] remove absurdly hard projects, move sources to separate file --- README.md | 32 +++++++++++--------------------- sources.md | 5 +++++ 2 files changed, 16 insertions(+), 21 deletions(-) create mode 100644 sources.md diff --git a/README.md b/README.md index 738dcf17a..31f9f4eb5 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ Numbers **Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. + Classic Algorithms ----------------- @@ -79,6 +80,7 @@ Classic Algorithms Graph -------- + **Graph from links** - Create a program that will create a graph or network from a series of links. **Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. @@ -87,6 +89,7 @@ Graph **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. + Data Structures --------- @@ -110,22 +113,15 @@ Text **RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. -**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* - **Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* **Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* -**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. - **Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* - -**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](http://daringfireball.net/projects/markdown/syntax).* - **Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. + Networking --------- @@ -143,6 +139,7 @@ Networking **Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. + Classes --------- @@ -164,6 +161,7 @@ Classes **Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. + Threading --------- @@ -171,13 +169,12 @@ Threading **Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. + Web --------- **Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* -**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. - **Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* **Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. @@ -194,13 +191,12 @@ Web **CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. + Files --------- **Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. -**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. - **Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. **Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* @@ -211,6 +207,7 @@ Files **Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* + Databases --------- @@ -224,12 +221,11 @@ Databases **Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. - **TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. **Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. + Graphics and Multimedia --------- @@ -243,15 +239,9 @@ Graphics and Multimedia **Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* + Security ------------- **Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. -=============================================== - -Sources -======= - -* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -* [Rosetta Code](http://rosettacode.org/) diff --git a/sources.md b/sources.md new file mode 100644 index 000000000..efb517dca --- /dev/null +++ b/sources.md @@ -0,0 +1,5 @@ +Sources +======= + +* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +* [Rosetta Code](http://rosettacode.org/) From 15222e9acc59ff5059800b8b54f618d96dc4cd05 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 12 Jun 2014 15:25:46 -0700 Subject: [PATCH 091/107] move sources back to readme --- README.md | 6 ++++++ sources.md | 5 ----- 2 files changed, 6 insertions(+), 5 deletions(-) delete mode 100644 sources.md diff --git a/README.md b/README.md index 31f9f4eb5..43bd038fc 100644 --- a/README.md +++ b/README.md @@ -245,3 +245,9 @@ Security **Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. + +Sources +======= + +* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +* [Rosetta Code](http://rosettacode.org/) diff --git a/sources.md b/sources.md deleted file mode 100644 index efb517dca..000000000 --- a/sources.md +++ /dev/null @@ -1,5 +0,0 @@ -Sources -======= - -* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -* [Rosetta Code](http://rosettacode.org/) From 34bca5b79b82f302781a89f4a4f8e3f3b994b2db Mon Sep 17 00:00:00 2001 From: Aaron Schumacher Date: Fri, 13 Jun 2014 15:19:48 -0400 Subject: [PATCH 092/107] typo: "form" -> "from" --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 43bd038fc..3a607e079 100644 --- a/README.md +++ b/README.md @@ -195,7 +195,7 @@ Web Files --------- -**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. +**Quiz Maker** - Make an application which takes various questions from a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. **Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. From d56420a7b7a4f5721e980985a8895e3b039ccb23 Mon Sep 17 00:00:00 2001 From: Wasim Sandhu Date: Mon, 7 Jul 2014 02:17:51 -0700 Subject: [PATCH 093/107] Added new Graphics and Multimedia project This is something that's been on my list for a while. I will work on a solution pronto. :+1: --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 3a607e079..cfe670b09 100644 --- a/README.md +++ b/README.md @@ -239,6 +239,8 @@ Graphics and Multimedia **Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* +**GIF Creator** A program that puts together multiple images (PNGs, JPGs, TIFFs) to make a smooth GIF that can be exported. *Optional: Make the program convert small video files to GIFs as well.* + Security ------------- From d44d05ea62043fa3b62d5996483b24f6c877615b Mon Sep 17 00:00:00 2001 From: bhainesva Date: Sat, 9 Aug 2014 20:20:46 -0400 Subject: [PATCH 094/107] Corrects it's to its --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cfe670b09..5430bce14 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ Mega Project List ======== -A list of practical projects that anyone can solve in any programming language (See [solutions](https://github.com/thekarangoel/Projects-Solutions)). These projects are divided in multiple categories, and each category has it's own folder. +A list of practical projects that anyone can solve in any programming language (See [solutions](https://github.com/thekarangoel/Projects-Solutions)). These projects are divided in multiple categories, and each category has its own folder. To get started, simply fork this repo. From 3627cf44c1d4a33373c8c88e03b5e072fcda1357 Mon Sep 17 00:00:00 2001 From: vdrey Date: Tue, 19 Aug 2014 20:34:25 -0400 Subject: [PATCH 095/107] Update Readme.md Added more layers to the mortgage calculator problem. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5430bce14..cd1d1f5d0 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ Numbers **Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. -**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. +**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. For added complexity, add an option for users to select the compounding interval (Monthly, Weekly, Daily, Continually). **Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. From 22dd3c466d357ef7454a93ce9dd51be0d493750d Mon Sep 17 00:00:00 2001 From: vdrey Date: Mon, 25 Aug 2014 20:15:31 -0400 Subject: [PATCH 096/107] Update Readme.md Added Find e to the Nth Digit. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index cd1d1f5d0..faed0bc94 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,8 @@ Numbers **Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. +**Find e to the Nth Digit** - Just like the previous problem, but with e instead of PI. Enter a number and have the program generate e up to that many decimal places. Keep a limit to how far the program will go. + **Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. **Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. From 3375fc3ddbd4a57a9dc17be5fec2350de2bde6dc Mon Sep 17 00:00:00 2001 From: vdrey Date: Tue, 26 Aug 2014 19:24:05 -0400 Subject: [PATCH 097/107] Added Limit Calculator Project --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index faed0bc94..4e052051b 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,8 @@ Numbers **Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. +**Limit Calculator** - Ask the user to enter f(x) and the limit value, then return the value of the limit statement *Optional: Make the calculator capable of supporting infinite limits.* + Classic Algorithms ----------------- From 3454679dc2d78d785223734414759fa2765a689c Mon Sep 17 00:00:00 2001 From: Lovekesh garg Date: Mon, 17 Nov 2014 00:54:09 +0530 Subject: [PATCH 098/107] adding the fast expo. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4e052051b..5f6ae5d9a 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,7 @@ Numbers **Limit Calculator** - Ask the user to enter f(x) and the limit value, then return the value of the limit statement *Optional: Make the calculator capable of supporting infinite limits.* +**Fast Exponentiation** - Ask the user to enter 2 integers a and b and output a^b (i.e. pow(a,b)) in O(lg n) time complexity.* Classic Algorithms ----------------- From 4879fab6aa0c5235c21a9587cb25fbcfe77d1192 Mon Sep 17 00:00:00 2001 From: Lovekesh garg Date: Mon, 17 Nov 2014 00:56:10 +0530 Subject: [PATCH 099/107] Readme Updates typo errors corrected --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5f6ae5d9a..21fdea112 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ Numbers **Limit Calculator** - Ask the user to enter f(x) and the limit value, then return the value of the limit statement *Optional: Make the calculator capable of supporting infinite limits.* -**Fast Exponentiation** - Ask the user to enter 2 integers a and b and output a^b (i.e. pow(a,b)) in O(lg n) time complexity.* +**Fast Exponentiation** - Ask the user to enter 2 integers a and b and output a^b (i.e. pow(a,b)) in O(lg n) time complexity. Classic Algorithms ----------------- From e287ca8a7eb9cdb3ef46478729fdce5a4660588f Mon Sep 17 00:00:00 2001 From: Anton Antonov Date: Sat, 22 Nov 2014 15:52:16 +0200 Subject: [PATCH 100/107] Added a Company Manager problem in Classes --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 21fdea112..b4bce325f 100644 --- a/README.md +++ b/README.md @@ -152,6 +152,9 @@ Classes **Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. +**Company Manager** - Create an hierarchy of classes - abstract class Employee and subclasses HourlyEmployee, SalariedEmployee, Manager and Executive. Every one's pay is calculated differently, research a bit about it. +After you've established an employee hierarchy, create a Company class that allows you to manage the employees. You should be able to hire, fire and raise employees. + **Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. **Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. From 8d188b907746b29390696dfef0b6022ad3ac5b31 Mon Sep 17 00:00:00 2001 From: James Lieu Date: Tue, 25 Nov 2014 15:03:49 +0000 Subject: [PATCH 101/107] Added Fizzbuzz problem --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 21fdea112..4a36a2e17 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,8 @@ Data Structures Text --------- +**Fizz Buzz** - Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”. + **Reverse a String** - Enter a string and the program will reverse it and print it out. **Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. From d240ac61ee85df54333a09aa3b82ee608c3f8b48 Mon Sep 17 00:00:00 2001 From: sutiam Date: Thu, 18 Dec 2014 05:08:59 -0800 Subject: [PATCH 102/107] Updated README.md typo fixed. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a6a7260b..c6439362f 100644 --- a/README.md +++ b/README.md @@ -243,7 +243,7 @@ Graphics and Multimedia **Stream Video from Online** - Try to create your own online streaming video player. -**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. +**Mp3 Player** - A simple program for playing your favorite music files. Add features you thought are missing from your favorite music player. **Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* From 5631ffa119bde2065cbdbcf4fab058810d8d5c4b Mon Sep 17 00:00:00 2001 From: sutiam Date: Fri, 19 Dec 2014 04:58:03 -0800 Subject: [PATCH 103/107] Updated README.md fixed typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c6439362f..e5237ddc8 100644 --- a/README.md +++ b/README.md @@ -243,7 +243,7 @@ Graphics and Multimedia **Stream Video from Online** - Try to create your own online streaming video player. -**Mp3 Player** - A simple program for playing your favorite music files. Add features you thought are missing from your favorite music player. +**Mp3 Player** - A simple program for playing your favorite music files. Add features you think are missing from your favorite music player. **Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* From b5185543e6bd3b2109e5a860a743407a62629d7a Mon Sep 17 00:00:00 2001 From: Kiriakos Velissariou Date: Thu, 25 Dec 2014 18:46:07 +0200 Subject: [PATCH 104/107] Added Minimum Spanning Tree Problem --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 3a6a7260b..1c57ff03c 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,9 @@ Graph **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. +**Minimum Spanning Tree** - Create a program which takes a connected, undirected graph with weights and outputs the minimum spanning tree of the graph i.e., a +subgraph that is a tree, contains all the vertices, and the sum of its weights is the least possible. + Data Structures --------- From 070095a83c21ab0f362485db4fba2b0bfe0a7020 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 7 Jan 2015 14:34:09 -0800 Subject: [PATCH 105/107] move credits on top --- README.md | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3a6a7260b..7fe54d547 100644 --- a/README.md +++ b/README.md @@ -14,13 +14,15 @@ See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/ You can find implementations of these projects in many other languages by other users in [this repo](https://github.com/thekarangoel/Projects-Solutions). -## Donations +## Credits -If *Projects* has helped you in any way, and you'd like to help the developer, please consider donating. +This repo was compiled by [Karan Goel](http://twitter.com/karangoel). -**- Gittip: [https://www.gittip.com/karan/](https://www.gittip.com/karan/)** +Problems are motivated by the ones shared at: + +* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +* [Rosetta Code](http://rosettacode.org/) -**- Flattr: [https://flattr.com/profile/thekarangoel](https://flattr.com/profile/thekarangoel)** ================================ @@ -256,10 +258,3 @@ Security ------------- **Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. - - -Sources -======= - -* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -* [Rosetta Code](http://rosettacode.org/) From 2bbb8ec298275efa35a186b5a5c60a540f6d49db Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 7 Jan 2015 14:37:00 -0800 Subject: [PATCH 106/107] add a table of contents, close #61 --- README.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7fe54d547..a4dc6607b 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,21 @@ Problems are motivated by the ones shared at: * [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) * [Rosetta Code](http://rosettacode.org/) - -================================ +## Table of Contents + +- [Numbers](https://github.com/karan/Projects#numbers) +- [Classic Algorithms](https://github.com/karan/Projects#classic-algorithms) +- [Graph](https://github.com/karan/Projects#graph) +- [Data Structures](https://github.com/karan/Projects#data-structures) +- [Text](https://github.com/karan/Projects#text) +- [Networking](https://github.com/karan/Projects#networking) +- [Classes](https://github.com/karan/Projects#classes) +- [Threading](https://github.com/karan/Projects#threading) +- [Web](https://github.com/karan/Projects#web) +- [Files](https://github.com/karan/Projects#files) +- [Databases](https://github.com/karan/Projects#databases) +- [Graphics and Multimedia](https://github.com/karan/Projects#graphics-and-multimedia) +- [Security](https://github.com/karan/Projects#security) Numbers --------- From 10ed1c05166c66aa1b1085b92d95b67ad5268182 Mon Sep 17 00:00:00 2001 From: Karan Goel <3261985+karan@users.noreply.github.com> Date: Tue, 24 Nov 2020 07:54:29 -0800 Subject: [PATCH 107/107] Create CNAME --- docs/CNAME | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/CNAME diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 000000000..7dc5a55a2 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +nojs.club \ No newline at end of file