Skip to content

Instantly share code, notes, and snippets.

View mumbleskates's full-sized avatar
🤔

Kent Ross mumbleskates

🤔
  • 🌵
View GitHub Profile
@mumbleskates
mumbleskates / heap.py
Last active July 11, 2023 12:15
Pure Python N-ary Heap implementation
# coding=utf-8
class NaryHeap(object):
"""implements an n-ary heap"""
def __init__(self, items=(), *, n=2, direction=min):
"""
create a new heap
# coding=utf-8
from math import log2, ceil
# valid chars for a url path component: a-z A-Z 0-9 .-_~!$&'()*+,;=:@
# for the default set here (base 72) we have excluded $'();:@
radix_alphabet = sorted(
"0123456789"
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
@mumbleskates
mumbleskates / pybullet.py
Last active April 25, 2016 21:11
Python extension plugin for weechat that pushes smart notifications to PushBullet. Notifications are grouped per channel, have increasing delays, preview the first few lines, go away when you have been active in the channel, and detect when notifications have been dismissed remotely.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
try:
# noinspection PyUnresolvedReferences,PyShadowingBuiltins
str = unicode
except NameError:
# noinspection PyShadowingBuiltins,PyUnboundLocalVariable
str = str
# coding=utf-8
from itertools import product
adjacents = ('08', '124', '1253', '236', '1457', '24568', '3569', '478', '57890', '689')
adjacents = {str(i): s for i, s in enumerate(adjacents)}
def get_pins_itertools(observed):
for pins in product(*(adjacents[ch] for ch in observed)):
# coding=utf-8
import re
def simple_compress(s):
c = ''.join((part[1] + (str(len(part[0])) if len(part[0]) > 1 else '')) for part in re.findall(r'((.)\2*)', s))
return c if len(c) < len(s) else s
@mumbleskates
mumbleskates / datething.py
Last active April 7, 2016 19:08
Find the closest date to another date from some inputs
# coding=utf-8
from __future__ import unicode_literals
from datetime import datetime
DATE_FORMAT = "%m/%d"
def convert_date(date_str):
@mumbleskates
mumbleskates / weelogfix.py
Last active March 21, 2016 05:06
Weechat logging file path unifier
# coding=utf-8
from datetime import datetime
from functools import partial
from itertools import chain, groupby
from operator import itemgetter
import os
import re
import sys
@mumbleskates
mumbleskates / parens.py
Last active March 13, 2016 04:18
paren-matching checker
# coding=utf-8
from __future__ import unicode_literals
def check_parens(string, pairs="()"):
"""
Check a string for non-matching braces or other character pairs and return
a list of failures, or an empty set if everything is OK.
`if check_parens(string, brackets):` is a good way to find bad brackets in
def minimum(stack):
gotten = []
try:
while True:
gotten.append(stack.pop())
except ValueError:
pass
if not gotten:
return 0
@mumbleskates
mumbleskates / graphs.py
Created March 8, 2016 22:59
Pythonic Dijkstra path finding
# coding=utf-8
from collections import OrderedDict, namedtuple
from functools import total_ordering
from heapq import heappush, heappop
from itertools import count, zip_longest
INITIAL_START = object()