Skip to content

Instantly share code, notes, and snippets.

View jremmen's full-sized avatar

John Remmen jremmen

  • Planning Center
  • San Diego
View GitHub Profile
@jremmen
jremmen / recursiveMinMax.js
Last active December 20, 2015 08:19
js: recursive max and min with partial application
var max = reduce(function(a, b) { return a > b; });
var min = reduce(function(a, b) { return a < b; });
function reduce(p) {
return function(a) {
function iter(a, c) {
if(a.length === 0) return c;
else return iter(a.slice(1), p(a[0], c) ? a[0] : c);
}
return iter(a.slice(1), a[0]);
@jremmen
jremmen / quicksort.js
Created July 22, 2013 01:03
js: quicksort
function quick_sort(a) {
var m = a.length;
if(m <= 1) return a;
var v = a.shift();
var l = [];
var r = [];
@jremmen
jremmen / pointdistance.js
Created July 14, 2013 01:32
calculate distance between two points
var Point = function(x, y) {
this.x = x;
this.y = y;
};
function getDistance(a, b) {
return Math.sqrt(Math.pow((a.x - b.x), 2) + Math.pow((a.y - b.y), 2));
};
@jremmen
jremmen / mergesort.js
Created July 4, 2013 00:11
js: merge sort
function mergesort(list) {
if(list.length <= 1) return list;
var l = mergesort(list.slice(0, list.length / 2));
var r = mergesort(list.slice(list.length / 2));
return merge(l, r);
}
function merge(l, r) {
var result = [];
while(l.length > 0 || r.length > 0) {
@jremmen
jremmen / objectpluck.js
Last active December 18, 2015 22:29
js: recursive pluck for javascript objects
function opop(obj,k) {
for(o in obj) {
if(o == k) {
result = obj[o];
delete obj[o];
return result;
}
else if(typeof obj[o] == 'object' && obj[o].constructor == Object) {
if(a = opop(obj[o], k)) return a;
}
@jremmen
jremmen / optimisticvalue.js
Last active December 18, 2015 21:19
js: optimistic value using linear relaxtion
function generateSortedWorth() {
return options.values.map(function(x, i) {
return {
index: i,
worth: x / options.weights[i],
};
}).sort(function(a, b) {
return a.worth > b.worth ? -1 : 1;
});
}
@jremmen
jremmen / primes.js
Created June 22, 2013 22:06
js: returns a list of n primes
function primes(n) {
function iter(i, acc) {
if(acc.length > n) return acc;
else if(i > 1 && divisor(2)) {
acc.push(i);
return iter(i + 1, acc);
}
else return iter(i + 1, acc);
function divisor(x) {
if(x > Math.sqrt(i)) return true;
@jremmen
jremmen / knapsacktable.js
Created June 20, 2013 06:34
js:knapsack object, returns optimal solution in total value, total weight, items selected, and a binary selection process
var Knapsack = function(o) {
this.values = o.values;
this.weights = o.weights;
this.capacity = o.capacity;
this.createSolutionTable = function () {
this.table = this.initializeMatrix();
for(i = 1; i <= this.values.length; i++) {
for(k = 0; k < this.capacity; k++) {
@jremmen
jremmen / binarytreeobj.js
Created June 12, 2013 20:55
js: binary tree objects
var Node = function(o){
this.key = o.key;
this.data = o.data;
this.left = {};
this.right = {};
}
var BinaryTree = function(o) {
this.tree = o.tree;
@jremmen
jremmen / enumObj.js
Created June 8, 2013 21:41
js: recursive object enumerator
function enumObj(obj) {
function recur(obj, acc) {
for(var prop in obj) {
if(obj[prop] instanceof Object && typeof obj[prop] === 'object') {
acc.push(recur(obj[prop], []));
} else {
acc.push(prop + ':' + obj[prop]);
}
}
return acc;