Skip to content

Instantly share code, notes, and snippets.

Connor Lane Smith cls

  • Oxford Nanopore
  • Berkshire, UK
Block or report user

Report or block cls

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@cls
cls / roman.c
Last active Aug 29, 2015
Roman numeral parser
View roman.c
#include <stdio.h>
enum { I, V, X, L, C, D, M, StackSize };
const int values[] = { 1, 5, 10, 50, 100, 500, 1000 };
int
unroman(const char *s)
{
int stack[StackSize];
@cls
cls / debruijn.hs
Last active Oct 21, 2017
Untyped lambda calculus with De Bruijn indices as a nested data type
View debruijn.hs
import Control.Applicative (liftA2)
data Term a = App (Term a) (Term a)
| Lam (Term (Maybe a))
| Var a
instance Functor Term where
fmap f (App s t) = App (fmap f s) (fmap f t)
fmap f (Lam t) = Lam (fmap (fmap f) t)
fmap f (Var x) = Var (f x)
@cls
cls / next.sh
Last active May 27, 2016
Script to execute the next binary along in $PATH
View next.sh
#!/bin/sh
dir=${1%/*}
bin=${1##*/}
shift
unset flag
set -f
IFS=:
@cls
cls / CovariantIterator.java
Last active Aug 29, 2015
Adaptor for covariant iterators in Java
View CovariantIterator.java
import java.util.Iterator;
public class CovariantIterator<T extends U, U> implements Iterator<U>
{
private Iterator<T> iter;
public CovariantIterator(Iterator<T> it)
{
this.iter = it;
}
@cls
cls / intern.c
Last active Aug 29, 2015
Interning strings with a prefix tree
View intern.c
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const char *
intern(const char *s)
{
union tree {
const char *str;
@cls
cls / mircrev.c
Last active May 23, 2016
Reversal of mIRC rich text (ASCII only)
View mircrev.c
#include <ctype.h>
#define BIT(X) (1 << (X))
#define CTRL(X) ((X) - '@')
enum { None = -1 };
enum {
Bold = CTRL('B'),
Colour = CTRL('C'),
@cls
cls / nmgrep.sh
Last active Jun 1, 2018
Script to grep objects' symbol tables
View nmgrep.sh
#!/bin/sh
pattern="$1"
shift
if [ $# -gt 1 ]
then
GREP_OPTIONS="$GREP_OPTIONS --with-filename"
export GREP_OPTIONS
fi
@cls
cls / dissre.py
Last active Feb 10, 2017
Python regular expression bytecode disassembler
View dissre.py
import re
import sre_compile
import sre_parse
from sre_constants import *
opcodes = dict((v,k) for (k,v) in OPCODES.items())
atcodes = dict((v,k) for (k,v) in ATCODES.items())
chcodes = dict((v,k) for (k,v) in CHCODES.items())
def print_dis(s, indent):
@cls
cls / repack.py
Last active Feb 16, 2017
Repacking structs to minimise bit wastage
View repack.py
from queue import PriorityQueue
class Field:
def __init__(self, size, align):
self.size = size
self.align = align
class Struct:
def __init__(self, fields):
size = 0
@cls
cls / catalan.py
Created Feb 20, 2017
Calculating the Catalan number series
View catalan.py
from fractions import Fraction
def catalan(n):
c = 1
for k in range(2, n + 1):
c *= Fraction(n + k, k)
return int(c)
You can’t perform that action at this time.