Giter Club home page Giter Club logo

projects's Introduction

Mega Project List

A list of practical projects that anyone can solve in any programming language (See solutions). These projects are divided in multiple categories, and each category has its own folder.

To get started, simply fork this repo.

See ways of contributing to this repo. You can contribute solutions (will be published in this repo) to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly.

You can find implementations of these projects in many other languages by other users in this repo.

Credits

This repo was compiled by Karan Goel.

Problems are motivated by the ones shared at:

Table of Contents

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.

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. 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.

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.

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

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.

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

Inverted index - An 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

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.

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.

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).

Vigenere / Vernam / Ceasar Ciphers - Functions for encrypting and decrypting data messages. Then send them to a friend.

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.

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.

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.

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 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.

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.

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 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.

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

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.

projects's People

Contributors

ajschumacher avatar awkwardgiraffe avatar bhainesva avatar bitdeli-chef avatar dbonadiman avatar gaurav-91 avatar grimley517 avatar iamvoid13 avatar jameslieu avatar jbranchaud avatar karan avatar kirvv avatar lower-case avatar sant0sh avatar suphiem avatar syndbg avatar vdrey avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

projects's Issues

Tic Tac Toe game

Develop a Tic Tac Toe game which can be played either as a 1 player (using bots) or 2 players!

Steganography

Steganography is the practice of concealing a file, message, image, or video within another file, message, image, or video. Wikipedia
I'd like to add it to the Security section...

New Project Suggestion in Databases

SQL Query Description Creator (Horrible title... I know)
I use a flavor of SQL known as CCL and could really use something that would take a query I make and use table and field descriptions to create an explanation of what the query does. Like the inclusion an exclusion criteria, and the basic parameters.

Data visualization projects

Some ideas for projects:

  1. Create an application which visualize facebook(or other social site) friends as graph, and shows statistics about friends.
  2. Salary visualization by data from job-search services.

Drhealsgood's solved problems

Unit tests are included in a separate module in the same folder for most problems.

-- Numbers --
Cost of Tiles to cover WxH floor
Drhealsgood (Python)

Change returning program
Drhealsgood (Python)

Binary to decimal converter
Drhealsgood (Python)

Unit converter - temp,money,binary to decimal etc
Drhealsgood (Python)

-- Strings --
Reverse a string
Drhealsgood (Python)

Pig Latin
Drhealsgood (Python)

Count Vowels
Drhealsgood (Python)

Check if Palindrome
Drhealsgood (Python)

Count Words in a String
Drhealsgood (Python)

Text to HTML Generator - this still only has the bare minimum of rules (emphasis, strong, etc) implemented
Drhealsgood (Python)

-- Classes --

Product Inventory Project
Drhealsgood (Python)

Happy Numbers

Hi. Is my solution to Happy Numbers added to gist and I do not have to open a new issue?

Vigenere Cipher

I believe it would be great to add the Vigenere Cipher in the Security section...
What do you think?

Prime-factorization is wrong

Your prime-factorization code give the wrong result.
ex.
number = 12
>>> [2,3]

when i actually have to be:
>>> [2,2,3]

You can check the version I have on my repository.

Would you be interested in some projects from my site?

I've just found a link to this great list at reddit - it is really cool! I also have a small collection of puzzles at my site - about 150 now. I see that some are similar (or exactly alike) to mentioned there - that is why I dare to offer them.

However I'm in a kind of trouble about do you really need them and if so, how to propose them - should I create an issue or PR for each of them which seem suitable for me - or it would be inconvenient?

file Hash calculator

Write an application, which takes in a file name, and a hashing type, I.E. md5, sha1, sha2, crc, bcript, ... and gives you the hash of the given file as a hex string.
For added complexity, take in a GPG key, or a link to one, and verify that the signature on a file is that of the given key.

Pi to the Nth decimal - Python 3

Hi!

I am learning python 3 and I just can't rewrite your code in python 3 without an error. Would you be able to help me out?

The root of the problem is the format since it changed in python 3 a little bit. But I have no idea how to solve this.

Thank you!

Product Inventory Management Project

Keeping in mind the projects listed here are for beginners, I would suggest the above mentioned project be a menu driven program which allows add,remove,search of products and an inventory to display all the products. In my opinion this would be a much helpful project. Thoughts guys ?

Submitting confusion

I'm not sure if I complete understand the guidelines for contributing. Are we ONLY supposed to commit the README change or do you want the source code to be added as well?

Link to Markdown documentation is broken

The link goes to:
https://github.com/thekarangoel/Projects/blob/master/daringfireball.net/projects/markdown/syntax
instead of:
http://daringfireball.net/projects/markdown/syntax

Calculator

hello,

in the book, what requested is to make a fraction calculator ( i.e: 1/2 + 5/9), it's somehow more challenging to what you did, but looking at you work, I know you can do it.

Classic Algorithms - Search?

Do you think it would useful to add binary search and linear search as a project for the classic algorithms category?

input a equation

how to read a equation (input window) and make a function that compute the regarding value of equation on a certain point
example:- f(x)=x^2+4x^3sin(x)+log(x)
read this equation
and calculate the value of equation on a particular point(x).

Solved Number Projects in Python

Hello!

I've read the contributing guideline and I thought I'd share some of my solutions to some Numbers projects. (Some have changed a lot, but some may be very similar to yours). The files can be found in this repo

The files are these:

Numbers

Find PI to the Nth Digit – Enter a number and have the program generate PI up to that many decimal places. No limit to the number of decimals

Fibonacci Value - Enter a number and have the program generate its Fibonacci value.

Fibonacci Sequence – Enter a number and have the program generate the Fibonacci sequence to that number.

Calculator - A simple calculator to do the 4 basic operations (Later make it scientific).

Prime Factorization – Have the user enter a number and find its prome factors. Extra: Show the exponent of each prime factor as well.

Next Prime Number – Have the program generate prime numbers until the user chooses to stop.

Rock-Paper-Scissors

I have done the same thing in Python and thought it might be fun to see other people's solutions of it.
Variants of RPS:

  • RPS-5: Rock, Paper, Scissors, Lizard, Spock
  • RPS-7: Rock, Paper, Scissors, Fire, Water, Air, Sponge
  • RPS-9: RPS-7 + Gun, Human
  • RPS-11: RPS-9 + Wolf, Devil
  • RPS-15: RPS-11 + Lightning, Dragon, Tree, Snake
  • RPS-25
  • And if you want to really torment yourself, RPS-101

distance.py bug

Hello!

I have found some bug in the distance.py file.

1.) It did not accept 'mi' as an input, only 'km'
2.) It would've always show the miles format (if unit == k) when unit is either 'km' or 'mi'

Fixed code

#!/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()

# BUG #1: if unit in 'km'
if unit == 'km' or unit == 'mi':

    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

    # BUG #2: if unit == 'k' 
    if unit == 'km':
        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!'

Currency Converter

I've already made something for this, and I think it would be interesting to see how people would do it in other languages. 😄

Epic

Thank you so much for this. I was looking into kickstarting my Python learning and this is a great way to do it.

Good luck! 😄

Compiler

Implementing a compiler is a big challenge, but nowadays it can be built by parts.

For example:

  1. Lexer - can be implemented with flex.
  2. Parser - can be implemented with bison.
  3. AST processing - this part is almost always specific for each concrete project, so it should be done by hand.
  4. Code generation and optimization - LLVM provides great framework for this.

You can gradually replace parts with your own implementations.

Also, that problem involves designing architecture of compiler, so it can help you with OOP style or functional programming design, if you want.

Ciphers

I have made a Python package with some of the ciphers you mentioned. ROT13, Vigenère, Vernam and G�ödel Numbering.
There is an alphabet only and a unicode version for each function. I have also added a one-time-pad generator that uses the microphone as a white noise generator to provide true random numbers.
Here's the repo. (It's in italian, you may not like it)

Project Idea - 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.

Here's my solution.

More Sorting algos?

Do you think it would be ok to include more sorting algorithms? At least the common ones like Bubble Sort, Insertion Sort, Merge Sort, Quick Sort, Heap Sort, Counting Sort, Radix Sort?

Lexer(Lexical Analyzer,for those who don't know)

Have anyone suggested a part of script interpreter(or specifically lexical analyzer) yet?
without the use of third party tools of course. To make it simple , focus on a target scripting language to do lexing, for example a tiny version of BASIC.

binary_decimal, fibonacci and prime

I don't think the solutions of these three problems are good enough.

1. binary_decimal
The decimal_to_binary function in this file uses type conversion. I don't think this is a good in this function. If you'd like to convert a digit to char, why not convert the whole number and there should be other solutions, not to mention the built-in support in Python. And actually the conversion is not a must and will bring a lot of convenience.
2. fibonacci
Put the if else block in while is not good because actually the if just need to be executed once. And the if statement is not cheap in Python. Put it outside will be better.
3. prime
Ahhh, curious. Why the math module is imported but not used? Shouldn't it be for i in range(2, int(math.ceil(math.sqrt(x))))?

Factor a word, and present its factors as characters

This is an absolutely crazy problem, I invented just for fun when I was learning python.
Take a word the user is given, say waffles. Then, for every letter in the word, factor its unicode value, and then add 32 to the result. Now, write the resulting letters for those digits to the screen. For added fun, grab the text from a large chunk of text, like a bible.

REST Web App Idea

Lot of applications today involve REST, I think making a basic REST web app where you have a front end that requests something, mid-tier that performs the logic/access a database and deals with pathing, to then deliver it to the front end to display.

An example is maybe like something simple such as states and capitals. Enter a state, and then give it's capital. Can make a database of that pretty easy in PostgreSQL (or really make it in excel, export it to CSV, then import to Postgres). Use a mid-tier like Java with Jersey and Tomcat/JBoss to deploy the server. The front end in JavaScript/HTML/CSS ofc or just XML if you don't care (probably gonna have the mid-tier make it into a JSON object for the front end to read), maybe even go further where the mid-tier makes it into a GeoJSON object that can be displayed using Leaflet.js.

Basically what I'm getting at is REST web apps are huge and a project like this would be something to familiarize yourself to do it any language.

Dice simulation

Any number of sides. I don't think dice needs to be explained, really.

Update README in classes

I am trying to attempt the bank account manager in the classes folder. Could you please go a little bit more in depth? I have withdraw, check and deposit working via abstract classes but I'm not sure if business should have different methods then savings.

Thanks.

Add license

Preferably public domain unless specified otherwise in the project's folder/file.

PI is wrong.

Pi works only until 8 digits. Need to fix that!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.