• Stars
    star
    2,190
  • Rank 20,863 (Top 0.5 %)
  • Language
    Lua
  • License
    MIT License
  • Created over 10 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Share, discuss and learn about algorithm implementations!

Algorithm Implementations

Contact me on Codementor

Join the chat at https://gitter.im/kennyledet/Algorithm-Implementations

(Note: there is a backstory on my motivation for starting this at the bottom of this README)

Updates

Update 7/19/15 Please include tests with your implementation submissions! Please see Issue #459 on instructions. Thanks for understanding!! <3

Update 1/4/15 Our site is now getting hundreds of unique visitors and thousands of pageviews per day :)

Algorithm.zone

Update 06/09/14 I have released a native Android app for viewing the algorithms! It's a wrapper around the web app with some native functionality. Check it out on Google Play here Algorithm Implementations Android App

Update 05/09/14: I am working on a web application that will tie things up in a much more fluid way, and help exhibit the algorithms to those who either don't know much about git/github, or just can't be vexed clicking through all the folders. This will open the repo up to a much wider audience in general!

You can see a preview here! Algorithms Implementations Website

Please offer up your suggestions in the Issues section of the Github repository

Update 12/30/13: I have given the 3 top committers (jcla1, PatrickYevsukov, dalleng) collaborator access. This was very well earned, as they have managed to contribute much more to this repo than I have had the time to.

Again, thanks so much for the consistency guys, it is extremely appreciated. It made sense to start with giving these guys collab access for obvious reasons, but I also thank every single person who has even submitted a pull request. Without you all, this repository would be nothing.

Purpose

We see tons of interesting projects that are actively contributed to here on Github. Seriously, it's very powerful.

Unfortunately, I haven't really spotted (a popular and language agnostic) one where people used the power of Git to share, discover, discuss and improve algorithm implementations!

Send us a pull request, and we will add any implementation of any algorithm you have so long as it at least mostly suits the following conventions.

Conventions

  • Language doesn't matter. Just make sure you're implementing an algorithm.

  • Submissions should follow this directory structure

      Algorithm_Name/Language_Name/username/filename.extension
      Algorithm_Name/Language_Name/username/filename_test.extension
    
  • Please include a description of the algorithm you are implementing; it doesn't really matter if it's copied from Wikipedia or not (citations please), but this really does help people who are trying to find new algorithms to implement and contribute by browsing this repository.

  • When implementing a new algorithm, create a "tags" file in the algorithm's root directory and add some appropriate tags

  • Please package your code in a directory bearing your GitHub username. git blame is cool, and has many more appropriate applications, but in this context I'd rather pull a flat list of files and be able to check out everyone's contributions that way than have to look through the revisions.

  • Each algorithm should have its corresponding unit test cases (as directory structure suggested above) which covers the corner cases, happy/unhappy paths. Please see Issue #459 for further discussion on this topic.

    The advantage of doing so is to assert that everything is covered, and that the algorithm is not broken between code changes.

    It also helps newbies to have a quick look at the unit test cases to understand the basic usecase of the algorithm.

  • Documentation inside the code is recommended. This helps others in understanding the code base.

  • Have fun!

Resources

We should also keep a curated list of resources dealing with algorithms.

Introductory Books

Sites

Online Classes

Backstory

I have been "coding" since I was about 12, and have been teaching myself software engineering principles through solving problems in various languages through practice, freelance work and my own projects.

But, you see, it wasn't until a couple of years ago in high school when I started to truly see the light about how languages are merely tools; I basically realized what is common sense to me now - to truly be able to call one's self a proficient programmer, one must go beyond simple syntax slinging and be capable of efficiently solving a much wider subset of problems within computer programming than the average programmer.

Of course, this was merely one of the initial revelations that led to the revelation that ultimately led to this repository.

When I decided to become a Computer Science major, I took the initiative to research actual Computer Science topics, outside of class, as I've always been more of a self-learner.

Lo and behold, CS and practical software engineering turned out to be two entirely different things.

I won't go into my whole journey up til this point in this README, but tl;dr:

There are many problem domains which are simply closed off to the programmer who stagnates in his learning and never studies how to analyze algorithms and develop his own. This is objectively true.

I also have a much greater level of respect towards my profession now, and take it very seriously. I have a relatively rigorous base education roadmap that I've laid out for myself. Even being just a core subset of skills from which I will base subsequently developed skills on, it's quite expansive and diverse. I do not plan on stagnating, ever.

Bitdeli Badge

More Repositories

1

Google-EmailScraper

Scraper that searches Google based on a query and scrapes all emails found on each page.
Python
88
star
2

MacDevelopmentSetupGuidelines

Disclaimer: These are actions and applications I believe to be the best for setting up an optimal development environment are extensions of my opinion, and not to be taken as objectively proper for every software engineer!
21
star
3

SwiftCap

A Mac OS X application for recording the screen and converting to .webm (for now) -- written in Swift
Swift
9
star
4

ripplr

A ripper for downloading all or a certain number of images from tumblrs.
Python
6
star
5

fourth-dimensional-neural-network

3
star
6

Concentration-Game

Classic concentration game implemented in Lua with Moai SDK (crossplatform)
Lua
3
star
7

Autocraig-Web

This web based tool allows for the automated scraping and replying to of Craigslist postings based on listings URLs (such as searches).
Python
3
star
8

Google-Plus-Event-Manager

You can use this script to automate the creation and editing of Google+ Events, and to read some Event details.
Python
3
star
9

tic-tac-toe

My implementation of Tic-Tac-Toe in Python w/ Pygame
Python
2
star
10

4chan-search

Provides a simple search engine for 4chan
Python
2
star
11

A-Proposal-for-a-Levitation-Algorithm

2
star
12

emp

Elemental Media Platform - A feature stacked media platform written in Python. It is destined to become much more than just a simple Youtube clone, and as such will have modules (hence, Elemental) for dynamically organizing and serving online media of virtually all types
JavaScript
2
star
13

The-Importance-of-Positive-Energy

1
star