Skip to content

Instantly share code, notes, and snippets.

@teh
teh / ElmDerive.hs
Last active August 29, 2015 14:16
break hs
{-# LANGUAGE TemplateHaskell #-}
module ElmDerive where
import Language.Haskell.TH
makeElm :: Name -> Q [Dec]
makeElm t = do
-- Get list of constructors for type t
TyConI (DataD _ _ _ constructors _) <- reify t
x <- [d| x = "hi" |]
let
region = "eu-west-1";
in
{
resources.ec2KeyPairs.waw-pair = { inherit region; };
resources.ec2SecurityGroups.http-ssh = {
inherit region;
rules = [
{ fromPort = 22; toPort = 22; sourceIp = "0.0.0.0/0"; }
@teh
teh / gist:6c79fd8ca3c560bf1caa
Created February 4, 2015 12:11
data generators
import random
import collections
# Generic n-ary tree
RoseTree = collections.namedtuple('RoseTree', 'a children')
def gen_int():
def _gen_int(rng, size):
return rng.randrange(0, size)
@teh
teh / sudoku.py
Last active January 31, 2020 17:43
Solve sudoku with a SAT solver.
import pycosat
import numpy
import itertools
WORLDS_HARDEST_RIDDLE_ACCORDING_TO_TELEGRAPH = """\
8........
..36.....
.7..9.2..
.5...7...
....457..
@teh
teh / n_queens.py
Created October 5, 2013 18:04
Solve n-queens with pycosat.
# Solve n-queens problem with picosat
import pycosat
import numpy
import itertools
def get_cnf(N):
cnf = []
# * convert to object because pycosat expects 'int's
# * add 1 because 0 is reserved in pycosat
@teh
teh / grind_coarseness.py
Created June 8, 2013 14:39
Measure average grind coarseness from a picture.
from PIL import Image
import numpy
from skimage.filter import sobel
from skimage.morphology import watershed
from scipy import ndimage as nd
grind = numpy.asarray(Image.open('grind.png')).mean(axis=2)
edges = sobel(grind)
markers = numpy.zeros_like(grind)
import random, turtle
def maze(w=10, h=10):
# This is the random spanning tree implementation
seen = set()
# Add some walls to confine the maze
for i in xrange(-1, w+1):
seen.add((i, -1))
seen.add((i, h+1))
@teh
teh / macchanger.py
Created November 10, 2012 14:55
mac changer
import dbus
bus = dbus.SystemBus()
NM = 'org.freedesktop.NetworkManager'
def get_manager():
proxy = bus.get_object(NM, '/org/freedesktop/NetworkManager')
return dbus.Interface(
proxy, NM)
@teh
teh / sudoku_smt.py
Created October 17, 2012 07:15
sudoku generator for smtlib input format
import numpy
MODEL = """\
53..7....
6..195...
.98....6.
8...6...3
4..8.3..1
7...2...6
.6....28.
import System.Environment
import Data.Array.Repa as R
import Data.Array.Repa.Algorithms.Randomish as RR
import Criterion.Main
import Criterion.Config
ra = RR.randomishDoubleArray (ix2 1000 3) 0 1 1
main = defaultMainWith defaultConfig {cfgSamples = ljust 10} (return ()) [
bgroup "pairwise-random" [