Skip to content

Instantly share code, notes, and snippets.

@loosechainsaw
loosechainsaw / bst.cpp
Created January 19, 2014 11:40
Binary Search Tree in C++
#include <iostream>
#include <functional>
#include <algorithm>
#include <exception>
#include <stdexcept>
template<class T, class Less, class Greater>
class Node{
public:
explicit Node(Less const& comparer, Greater const& greater);
@loosechainsaw
loosechainsaw / binaryheappq.cpp
Created January 7, 2014 10:48
Priority Queue with a Binary Heap Structure
#include <iostream>
#include <memory>
template<class T>
class LessThan{
public:
inline static bool apply(T const& a, T const& b){
return a < b;
}
};
@loosechainsaw
loosechainsaw / Main.scala
Created December 10, 2013 12:31
Scala Quick Find and Quick Union implementations
import scala.annotation.tailrec
object Main extends App {
def QuickFindExample() {
var qu = QuickFind(10)
qu.union(1, 6)
qu.union(2, 6)
qu.union(2, 7)
@loosechainsaw
loosechainsaw / fuckyeahreadermonad.scala
Created November 6, 2013 12:16
Fuck Yeah Reader Monad
package examples.monads
case class User(id: Int, username: String, name: String)
trait UserRepository{
def getById(id: Int) : Option[User]
def save(user: Option[User]) : Unit
}
trait UserService{
def foldLeft[T](l: List[T], initial: T, f: (T,T) => T) : T = {
def loop(v: List[T], accum: T) : T = {
l match{
case Empty => accum
case Cons(head,tail) => loop(tail, f(head,accum))
}
}
loop(l,initial)
@loosechainsaw
loosechainsaw / synergy.cs
Created October 4, 2013 05:42
Functional Object Oriented Synergy In C#
using System;
namespace Synergy
{
public class Unit
{
public static Unit Empty()
{
return new Unit();
@loosechainsaw
loosechainsaw / twostack.cpp
Created August 21, 2013 13:07
Dijkstra Two Stack Solution
#include <iostream>
#include <stack>
#include <stdexcept>
#include <cctype>
#include <cstdlib>
using namespace std;
int evaluate(string const &expression){
stack<char> operators;
@loosechainsaw
loosechainsaw / threesumquadraric.cpp
Created August 19, 2013 11:17
Quadratic slow 3 Sum Problem
#include <iostream>
template<class T>
T three_sum(T values[], int N){
T count = T();
for(int i = 0; i < N; ++i)
{
@loosechainsaw
loosechainsaw / qunionimproved.cpp
Last active December 21, 2015 05:59
Quick Union Weighted
#include <iostream>
template<int N>
class quick_union{
public:
quick_union()
{
for(int i =0; i < N; ++i){
elements[i] = i;
sizes[i] = 1;
@loosechainsaw
loosechainsaw / qunion.cpp
Created August 17, 2013 14:23
Quick Union In C++ From Robert Sedgewicks Algorithms Part 1 Course
#include <iostream>
template<int N>
class quick_union{
public:
quick_union()
{
for(int i =0; i < N; ++i){
elements[i] = i;
}