Skip to content

Instantly share code, notes, and snippets.

View mrgriscom's full-sized avatar

Drew Roos mrgriscom

View GitHub Profile
@mrgriscom
mrgriscom / gist:37986cb229023aad8e05
Created November 18, 2014 15:12
flatten a nested dict
def dict_flatten(d, delim='.', prefix=[]):
def pairs(d, prefix):
def flatten(k, v):
if isinstance(v, dict):
return pairs(v, k)
else:
return [(k, v)]
for k, v in d.iteritems():
for e in flatten(prefix + [k], v):
yield e
@mrgriscom
mrgriscom / gist:3b564a23bd6ba0c43a5e
Created November 11, 2014 02:38
the java singularity?
static <E> Iterable<Iterable<E>> chunker(final Iterator<E> stream, final long size) {
return new Iterable<Iterable<E>>() {
public Iterator<Iterable<E>> iterator() {
return new Iterator<Iterable<E>>() {
public boolean hasNext() {
return stream.hasNext();
}
public Iterable<E> next() {
return new Iterable<E>() {
@mrgriscom
mrgriscom / sudoku.py
Last active August 29, 2015 14:07
sudoku solver
import copy
import sys
class ConsistencyError(Exception):
pass
class SudokuBoard(object):
def __init__(self):
self.cells = {}
for i in xrange(9):
@mrgriscom
mrgriscom / gist:e919294c4dbcce23ffd1
Created June 3, 2014 19:47
create a color palette for the gdaldem color-relief command
import math
import colorsys
MIN = -500 # m
MAX = 9000 # m
CYCLE = 500 # m
"""
make an elevation color palette suitable for global use, while still preserving
small variations.
@mrgriscom
mrgriscom / gist:5218656
Created March 22, 2013 03:11
analyze use of the shift key for typing passwords
import random
alpha_lower = 'abcdefghijklmnopqrstuvwxyz'
alpha_upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
numeric = '0123456789'
punct = '''`-=[]\;',./'''
shift_punct = '!@#$%^&*()~_+{}|:"<>?'
shift_chars = set(c for c in alpha_upper + shift_punct)
@mrgriscom
mrgriscom / gist:3750582
Created September 19, 2012 16:21
zscore xml fixture generator script
import csv
import os.path
import sys
from lxml import etree
from lxml.builder import ElementMaker
E = ElementMaker()
def loadcsv(path):
@mrgriscom
mrgriscom / gist:3060466
Created July 6, 2012 14:27
reverse ssh tunnel script
import os
import os.path
import re
import time
import json
# script to create an ssh tunnel from a public server back to a private (firewalled/NATted) machine; a poor man's VPN, basically
# how it works:
# private machine run this script at regular intervals, which attempts to ssh into public server; if successful, it
@mrgriscom
mrgriscom / gist:1527181
Created December 28, 2011 08:58
parse GPX trackfiles
from xml.etree import ElementTree as et
import sys
from datetime import datetime
def _(tag):
return '{%s}%s' % ('http://www.topografix.com/GPX/1/1', tag)
def parse(f):
node = et.parse(f).getroot()
for p in node.findall('.//%s' % _('trkpt')):