Skip to content

Instantly share code, notes, and snippets.

View quad's full-sized avatar

Scott Robinson quad

View GitHub Profile
@quad
quad / fix.py
Last active August 12, 2020 14:21
OPERATORS = "+-"
def simplify_parens(expr):
"""
Remove all unnecessary parenthesis for a simple algebra-like string. It maintains the brackets, so any operator can be swapped for any other and the resulting expression will have the same results before and after parenthesis reduction.
>>> simplify_parens('a')
'a'
>>> simplify_parens('a + b')
@quad
quad / Makefile
Last active January 22, 2019 16:15
Make macOS (OSX) Greyscale from the terminal (CLI)
tgray: tgray.c
clang -g -std=c11 -Wall -framework ApplicationServices $^ -o $@
@quad
quad / Makefile
Last active August 3, 2018 03:16
Find a cycle in a linked list, for all your tech interview problem needs.
CFLAGS=-Wall -Wextra -Werror -std=c99 -O
all: cycle
./cycle
cycle: cycle.c
@quad
quad / keybase.md
Created April 11, 2017 02:06
Keybase Proof

Keybase proof

I hereby claim:

  • I am quad on github.
  • I am quad (https://keybase.io/quad) on keybase.
  • I have a public key ASBxDFR1P5fGthosSBX-iUd18uAFSCpNZdqCY0yE0QaPvQo

To claim this, I am signing this object:

@quad
quad / zoe-text.html
Created April 3, 2017 09:55
An incomplete labour of impermanent love
<html>
<meta charset="utf-8" />
<style>
body { background-color: white; margin: auto; text-align: center; }
p { writing-mode: vertical-rl; }
span { font-size: 3vh; }
#off { color: white };
</style>
@quad
quad / usaa_to_ledger.py
Last active January 23, 2020 18:25
Convert USAA Bank Statements to Ledger Transactions
import datetime
import enum
import re
import sys
import types
from collections import namedtuple
from decimal import Decimal
from operator import attrgetter
@quad
quad / icake.py
Created December 14, 2016 01:18
Interview Cake Solutions
import typing
import unittest
class TreeNode:
def __init__(self, left=None, right=None):
self.left = left
self.right = right
def is_superbalanced(self):
@quad
quad / subtype_registration_example.rb
Created March 12, 2015 03:10
A rough sketch to how I'd register subtypes.
class Thing < Struct.new(:color)
@@things = {}
def self.parse description
type_name, color = description.split
@@things[type_name].new color
end
def self.type_code code
@@things[code] = self
@quad
quad / times.rb
Last active August 29, 2015 14:07
Because implementing cron is always a good idea.
require 'date'
require 'minitest/autorun'
class Time
def self.normalize time
dt = DateTime.parse(time).to_time.utc
Time.utc(Time.now.year, nil, nil, dt.hour, dt.min)
end
def inbetween start_time, end_time
@quad
quad / edit_behavior.py
Last active August 29, 2015 13:57
edit_behavior.py customization for Chinese study
# -*- coding: utf-8 -*-
# Welcome to the Chinese Support Add-on's field edition ruleset.
# Here, you can tweak the note editor helper's behavior to your liking.
#
# If you messed things up, you can safely delete file
# addons/chinese/edit_behavior.py from your Anki directory.
# It will be recreated the next time you restart Anki.
#
# You can read about all available functions at:
# https://github.com/ttempe/chinese-support-addon/wiki/Edit-behavior