Skip to content

Instantly share code, notes, and snippets.

View hamishcampbell's full-sized avatar
🚀
rockets

Hamish Campbell hamishcampbell

🚀
rockets
View GitHub Profile
@hamishcampbell
hamishcampbell / polyomino-obfus.py
Created September 7, 2013 01:35
Highly readable Polyomino solution
import sys, itertools
class Polyomino(tuple):
def __hash__(_):return(getattr(_,'',''))or[setattr(_,'',setattr(_,'_',map(min,zip(
*(setattr(_,'p',_.__class__((c[1],m-c[0]-1)for(c)in(_.p))if'p'in(_.__dict__)else(_))
or(getattr(_,'p'))))))or(min(getattr(_,'',hash(tuple(sorted(setattr(_,'p',_.__class__(
[(x-_._[0],y-_._[1])for(x,y)in(_.p)])if(_._[0]or(_._[1]))else(_.p))or(_.p))))),
hash(tuple(sorted(_.p))))))for(m)in(itertools.repeat(max(max(_,key=max)),4))]and(getattr(_,''))
def __eq__(*_):return(1&len(set(map(hash,_))))
def __call__(_,__):return[_.__class__(((__,__),))]if(not(1%__))else(set(itertools.chain(*[set([_.__class__
(_+tuple([a]))for(a)in(set((c[0]+x,c[1]+y)for(c,(x,y))in(itertools.product(
@hamishcampbell
hamishcampbell / polyomino.py
Created September 6, 2013 23:26
Polyomino Reference Source - PyCon 2013
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import sys
class Polyomino(object):
def __init__(self, iterable):
self.squares = tuple(sorted(iterable))
def __repr__(self):
@hamishcampbell
hamishcampbell / gist:62d4fd39cc231dfcaf66b5390a12fe35
Created May 12, 2020 10:23
QGIS Geometry Generator expression to approximate rock outcroppings
with_variable(
'segment_len',
11, -- the length of each segment
collect_geometries(
array_foreach(
generate_series(
0, length(boundary($geometry)) - @segment_len, @segment_len
),
with_variable('offset_inner',
offset_curve(
@hamishcampbell
hamishcampbell / description.txt
Created March 13, 2019 00:41
Mostly Geocoded NZ Pokie Machine Locations December 2018
Pokie machies by location (Dec 2018), CC-BY DIA NZ from:
https://www.dia.govt.nz/diawebsite.nsf/wpg_URL/Resource-material-Information-We-Provide-All-Venues-and-Numbers-by-Territorial-AuthorityDistrict
Geocoded with addy.co.nz 13th March 2019 by Hamish Campbell
There are a few unfound addresses and no manual checking of other results has been done.
@hamishcampbell
hamishcampbell / sha.js
Last active December 18, 2015 13:59 — forked from wombleton/sha.js
console.log(require('crypto').createHash('sha1').update('blob 14\0Hello, World!').digest('hex'));
$> d4fcfe4d339d4e59d168fdf3c0ad445fa980a7d6
@hamishcampbell
hamishcampbell / gist:4133562
Created November 23, 2012 01:20
Dojo 1.8 / AMD Style Gmaps Loader
/**
* Dojo AMD Google Maps Loader Plugin
*/
define([
"dojo/_base/kernel",
"dojo/topic"
], function(kernel, topic) {
var w = kernel.global;
w._googleApiLoadCallback = function() {
@hamishcampbell
hamishcampbell / polyomino.py
Created June 28, 2012 21:55
Polyomino Solver
# -*- coding: utf-8 -*-
#!/usr/bin/env python
"""Finds n-order Polyominos
https://en.wikipedia.org/wiki/Polyomino
Hamish Campbell <hn.campbell@gmail.com>
http://polemic.net.nz
License: CC-BY 2012, use it for good, not for evil.
"""
@hamishcampbell
hamishcampbell / gist:912757
Created April 10, 2011 21:45
Quick PHP timezone juggling example.
<?php
$timezoneAuckland = new DateTimeZone('Pacific/Auckland');
$timezoneHelsinki = new DateTimeZone('Europe/Helsinki');
$currentTime = new DateTime('now', $timezoneAuckland);
$helsinkiTime = new DateTime('now', $timezoneHelsinki);
printf(
"It is currently %s <br>",
$currentTime->format(DateTime::RSS)
);
@hamishcampbell
hamishcampbell / gist:873351
Created March 16, 2011 21:27
ParserRegexp state before Apache (windows) crash
object(ParserRegexp)[30]
public 'parser' =>
object(SSTemplateParser)[29]
protected 'includeDebuggingComments' => boolean false
protected 'match_Template_typestack' =>
array
0 => string 'Template' (length=8)
protected 'match_Word_typestack' =>
array
0 => string 'Word' (length=4)
@hamishcampbell
hamishcampbell / gist:872020
Created March 16, 2011 04:34
Example of a regex expression that crashes Apache on Windows
<?php
$rx = <<<'RX'
/
(
(\\.) | # Any escaped character
([^<${]) | # Any character that isn't <, $ or {
(<[^%]) | # < if not followed by %
($[^A-Za-z_]) | # $ if not followed by A-Z, a-z or _
({[^$]) | # { if not followed by $
({$[^A-Za-z_]) # {$ if not followed A-Z, a-z or _