Giter Site home page Giter Site logo

madhava-sridhar / algorithmaday Goto Github PK

View Code? Open in Web Editor NEW

This project forked from pfcoperez/algorithmaday

0.0 0.0 0.0 564 KB

Repository containing source code for submissions at DailyAlgorithm Twitter account.

Home Page: https://twitter.com/DailyAlgorithm

License: GNU General Public License v3.0

Scala 100.00%

algorithmaday's Introduction

Algorithm-a-day

Build Status

This repository holds the source code of several implementations for data structures and algorithms discussed at the Tweeter feed @DailyAlgorithm.

It's intended to be more a collection, a catalogue, than a library to be included in a project.

Requests

There is a high probability of you finding flagrant absences in this catalogue, that's why it would be nice if you could ask for implementations as well as suggest changes. You can do that:

  • By opening an issue at this GitHub repository. You can find an example here
  • Through algorithmaday Gitter channel.
  • Via Twitter: Direct messages or just mentions.

@DailyAlgorithm will mention you if your suggestion leads to an entry in the feed.

Contribute

Keeping a daily feed of functional algorithm implementations is not a task for a one-human-army. That's why contributing to this project is highly encouraged.

If these moving words haven't convinced you to loan your precious time to "the cause", you can always consider some of the following reasons:

First: Implementing algorithms in Scala, constraining yourself to functional programming is one of the funniest puzzles you'll ever met.

Besides, from a selfish standpoint, you will:

  • Get the credit in the daily tweeter feed.
  • Train your problem solving skills.
  • Discuss about the approaches to solve problems and learn along the way.

But, more important are some of the reasons to support the Scala & Functional Programming communities:

  • Spread the word about category theory, performance, data structures and other Scala libraries.
  • Demonstrate that Functional Scala can be quite a performance beast.
  • Spread the knowledge on algorithmic design.

The contributor guide to @DailyAlgorithm

Accepted contributions will:

  • Be 100% referentially transparent.
  • Offer clean reusable code. Preferably generic.
  • Come with clear time complexity upper bound, at least for the average case.
  • Include a Twitter handle or other mean to refer the author in the feed.

NOTE: Feel free to open PRs even when those might not meet some or all of the requirements above described. The maintainer(s) will offer as much help as possible.

Find and example here.

Outstanding ones will:

  • Show functional patterns usage. Such as category theory application.
  • Introduce new technologies related to: Functional programming (and/or category theory) patterns, data structures, software testing and performance measurements.
  • Include one or more diagrams explaining the contribution, they will be used in the Twitter feed.

Structure

Given the nature of its code base, this repository grows organically as new algorithms tweets get published.

Algorithms and datastructures implementations are clustered together in packages in function of the kind of data they manipulate or the kind of problems they solve.

If these families grow, new package trees should be created. Take datastructures as an example:

  • Root family datastructures:
    • Graphs: Implementation of graphs, directed or undirected, connected or not, trees or with cycles...
      • Directed: Implementations of directed graphs.
        • Trees: Trees can be seen as a sub-type of directed graph.
      • Undirected: Sub-family of undirected graphs.
    • Heaps
    • Queues
    • Sets: As the set forest known as Union-Set or disjoint sets.

algorithmaday's People

Contributors

pfcoperez avatar

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.