Skip to content

Instantly share code, notes, and snippets.

View fffej's full-sized avatar

Jeff Foster fffej

View GitHub Profile
@fffej
fffej / DynamicTimeWarpingWin.hs
Created July 21, 2014 07:24
DynamicTimeWarpingWin.hs
dtwWin :: V.Vector a -> V.Vector a -> (a -> a -> Int) -> Int -> Array (Int,Int) Int
dtwWin x y cost window = runSTArray $ do
let n = V.length x
m = V.length y
maxCost = maxBound
w = max window (abs (n - m)) -- constrain window size
d <- newArray ((0,0),(m,n)) maxCost
writeArray d (0,0) 0
forM_ [1..n] $ \i ->
forM_ [max 1 (i-w) .. min m (i+w)] $ \j -> do
@fffej
fffej / DynamicTimeWarping.hs
Created July 21, 2014 07:22
DynamicTimeWarping
dtw :: V.Vector a -> V.Vector a -> (a -> a -> Int) -> Array (Int,Int) Int
dtw x y cost = runSTArray $ do
let n = V.length x
m = V.length y
maxcost = maxBound
d <- newArray ((0,0),(m,n)) 0
forM_ [1..n] (\i -> writeArray d (0,i) maxcost)
forM_ [1..m] (\i -> writeArray d (i,0) maxcost)
forM_ [1..n] $ \i ->
forM_ [1..m] $ \j -> do
@fffej
fffej / StableMarriageProblem.hs
Created July 14, 2014 07:13
Stable Marriage Problem
import Data.List
import Data.Maybe
stableMatch :: (Eq m, Eq w) => [(m,[w])] -> [(w,[m])] -> [(m,w)]
stableMatch ms ws = stableMatch' []
where
stableMatch' ps = case unmarried ms ps of
Just unmarriedMan -> stableMatch' (findMatch unmarriedMan ws ps)
Nothing -> ps
@mixin border {
border: 1px solid #333;
}
article.post {
background: #eee;
@include border;
}
ul.menu {
background: #ccc;
@include border;
private LiveDatabase RefreshLiveDatabase(LiveDatabase source, int whichDatabase)
{
source.Cleanup();
var original = whichDatabase == 1 ? m_DB1Original : m_DB2Original;
return original.ToLive();
}
@fffej
fffej / gist:4135446
Created November 23, 2012 12:40
WWII Pigeon Message
AOAKN HVPKD FNFJW YIDDC
RQXSR DJHFP GOVFN MIAPX
PABUZ WYYNP CMPNW HJRZH
NLXKG MEMKK ONOIB AKEEQ
WAOTA RBQRH DJOFM TPZEH
LKXGH RGGHT JRZCQ FNKTQ
KLDTS FQIRW AOAKN 27 1525/6
@fffej
fffej / FactorsAndMultiples.hs
Created October 17, 2012 06:51
Best first search for factors and multiples
module FactorsAndMultiples where
import Data.List
import Data.Ord (comparing)
isFom :: Int -> Int -> Bool
isFom x y = x `mod` y == 0 || y `mod` x == 0
isSequenceValid :: [Int] -> Bool
isSequenceValid [] = True
@fffej
fffej / expressions.java
Created July 12, 2012 10:25
Expressions
public interface Expression {
int evaluate();
}
public class Constant implements Expression {
private final int value;
Constant(int value) { this.value = value; }
public int evaluate() { return value; }
@fffej
fffej / terribleTest.java
Created July 12, 2012 10:00
Top level.
@Test
public void test() {
Environment env = new Environment();
env.register(assign($("a"), plus($("b"), $("c"))));
env.register(assign($("c"), multiply($(2), $("d"))));
env.register(assign($("b"), $(3)));
env.register(assign($("d"), $(2)));
Assert.assertThat(env.valueOf($("a")), equalTo(7));
@fffej
fffej / SensibleNotCensorShip.html
Created June 29, 2012 06:44
Sensible Not CensorShip
The responsibility for controlling a child's access to the Internet should lie with the parents, not with a central Government authority.