Skip to content

Instantly share code, notes, and snippets.

@sabotuer99
sabotuer99 / truckdp.js
Created June 17, 2017 05:03
Truck Position DP, Version 2
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Analysis')
.addItem('Generate Positions', 'genPositions')
.addToUi();
}
function genPositions() {
var data = SpreadsheetApp.getActive().getSheetByName("data").getDataRange().getValues();
@sabotuer99
sabotuer99 / qs.js
Created July 22, 2016 20:36
quicksort in javascript
//http://blog.mgechev.com/2012/11/24/javascript-sorting-performance-quicksort-v8/
function swap(array, i, j) {
var temp = array[i];
array[i] = array[j];
array[j] = temp;
return array;
}
function partition(array, left, right, comparitor) {
@sabotuer99
sabotuer99 / gist:ec142f373f3ec76fcfd0ce823472e98a
Last active July 19, 2016 20:11
Truck Positon Dynammic Programming in Javascript
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Analysis')
.addItem('Generate Positions', 'genPositions')
.addToUi();
}
function genPositions() {
var data = SpreadsheetApp.getActive().getSheetByName("data").getDataRange().getValues();
@sabotuer99
sabotuer99 / gist:2e47cff6a236dadf65a2
Created March 4, 2016 21:14
Take down SeekingAlpha registration wall
modal = document.getElementsByClassName("modal")[0];
document.body.removeChild(modal);
document.body.classList.remove("modal-open");
upsell = document.getElementsByClassName("upsell")[0];
upsell.parentElement.removeChild(upsell);
ps = document.getElementsByTagName('p');
h2s = document.getElementsByTagName('h2');
as = document.getElementsByTagName('a');
for (i = 0; i < ps.length; i++) {
@sabotuer99
sabotuer99 / gist:5e134e8c13a3991d11bd
Created December 2, 2015 19:32
Javascript to print out the character codes in a string
function printCodes(str) {
var result = "";
for(var i = 0; i < str.length; i++){
result += str.charCodeAt(i) + " ";
}
return result;
}
@sabotuer99
sabotuer99 / gist:e48d1a2bb8f4c04e1052
Created November 29, 2015 20:36
Dragon Curve fractal in JavaScript for Khan Academy project
/*
The dragon curve drawn using an L-system.
variables : X Y
constants : F + −
start : FX
rules : (X → X+YF+), (Y → -FX−Y)
angle : 90°
Here, F means "draw forward", − means "turn left 90°", and + means "turn right 90°". X and Y do not correspond to any drawing action and are only used to control the evolution of the curve.
@sabotuer99
sabotuer99 / gist:173efa3c16b247a3b556
Created November 21, 2015 23:37
FIND-MAX-SUBARRAY from CLRS in Java
//I was trying to do a Modulo sum, but this approach didn't work.
//I tried to take all the mod stuff out (I'm pretty sure it's a decent
//implementation of max subarray) but I may have missed something...
public static void log(Object message){
System.out.println(message);
}
/* CLRS pg.71
FIND-MAX-CROSSING-SUBARRAY(A, low, mid, high)
@sabotuer99
sabotuer99 / gist:2915c6986aa8e0c6ec56
Last active August 28, 2015 20:04
Automatically generate some getters and setters
fields = ["FUND_CD","DEPT_CD","UNIT_CD","APPR_CD","OBJ_CD","SOBJ_CD","RSRC_CD","BSA_CD","LOC_CD","ACTV_CD","FUNC_CD","RPT_CD","MJR_PROG_CD","PROG_CD","PPC_CD","PHASE_CD","TASK_CD","STASK_CD",]
function camelize(str) {
return str.replace(/[_]+/g, ' ').toLowerCase().replace(/(?:^\w|[A-Z]|\b\w)/g, function(letter, index) {
return index == 0 ? letter.toLowerCase() : letter.toUpperCase();
}).replace(/[\s]+/g, '');
}
fields.forEach(function (field) {
var string = 'public string ' + camelize(field) + '\n' +
@sabotuer99
sabotuer99 / gist:aad344d30c911c21416f
Created August 5, 2015 15:52
Aggregates data from multiple Google sheets into a master sheet
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var searchMenuEntries = [{name: "Find Sheets", functionName: "search"},
{name: "Aggregate Data", functionName: "aggregate"}];
ss.addMenu("Aggregate", searchMenuEntries);
}
function search() {
// Get the active spreadsheet and the file list sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
@sabotuer99
sabotuer99 / gist:6708168a9bcb0ef1a098
Created July 31, 2015 15:03
Code to determine total run time for a list of coursera lectures
function process(element){
var text = element.innerText;
var pattern = /\((\d+):(\d{2})\)/;
var results = text.match(pattern);
if(results && results.length == 3)
return results[1]*60 + results[2]*1;
return 0;
}
links = document.getElementsByClassName("lecture-link");