Skip to content

Instantly share code, notes, and snippets.

Avatar

Louis Warren louisswarren

View GitHub Profile
@louisswarren
louisswarren / graphs.mac
Last active Aug 13, 2022
Graphs in maxima
View graphs.mac
anyp(pred, seq) := lreduce(lambda([P, x], P or pred(x)), seq, false);
allp(pred, seq) := lreduce(lambda([P, x], P and pred(x)), seq, true);
walklength(seq) := (length(seq)-1)/2;
walkverts(seq) := makelist(seq[2*i-1], i, 1, walklength(seq)+1);
walkedges(seq) := makelist(seq[2*i], i, 1, walklength(seq));
closedp(seq) := is(first(seq) = last(seq));
vertexset(G) := first(G);
edgeset(G) := second(G);
@louisswarren
louisswarren / .gitignore
Last active Aug 13, 2022
CPython testing
View .gitignore
primesmodule.o
primes.*.so
@louisswarren
louisswarren / private_ips.py
Last active Jul 9, 2022
All private IPv4 addresses, in all formats
View private_ips.py
IPV4_OCTET_TYPES = {
4: (24, 16, 8, 0,),
3: (24, 16, 0,),
2: (24, 0,),
1: ( 0,),
}
def num(ip):
octets = tuple(map(int, ip.split('.')))
bases = IPV4_OCTET_TYPES[len(octets)]
@louisswarren
louisswarren / Makefile
Last active Jul 2, 2022
Hash table in C
View Makefile
.PHONY: default
default: dict
./dict
dict: dict.c set.o
test: test.c set.o
set.o: set.c set.h
@louisswarren
louisswarren / flexible-in-flexible.c
Created Jun 29, 2022
Flexible array members in flexible array members are allowed
View flexible-in-flexible.c
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct a {
char x;
char buf[];
};
@louisswarren
louisswarren / test.c
Created Jun 26, 2022
Simple testing in C
View test.c
int
check(const char *s, int p)
{
static int passes = 0;
static int failures = 0;
const char *fail = "\x1B[31mFAIL\x1B[0m";
const char *pass = "\x1B[34mPASS\x1B[0m";
if (s) {
fprintf(stderr, "[%s] %s\n", p ? pass : fail, s);
@louisswarren
louisswarren / pre-commit.R.bash
Created Jun 2, 2022
Precommit for linting R
View pre-commit.R.bash
#!/bin/bash
#
if git rev-parse --verify HEAD >/dev/null 2>&1
then
against=HEAD
else
# Initial commit: diff against an empty tree object
against=$(git hash-object -t tree /dev/null)
fi
@louisswarren
louisswarren / easy_passwords.py
Last active Apr 30, 2022
Generate passwords which are easy to type
View easy_passwords.py
# Generate passwords which can be typed without using any finger to press two
# different keys in a row.
from math import log, ceil
# For each finger, write the letters *you* type with that finger.
finger_classes = [
'qaz',
'wsx',
'edc',
@louisswarren
louisswarren / rcpp-trycatch.R
Last active Mar 25, 2022
Demonstration of performance penalty of Rcpp code being wrapped in tryCatch
View rcpp-trycatch.R
library(Rcpp)
library(profvis)
cppFunction('
double
call_rnorm(int ignored)
{
Function f("rnorm");
NumericVector x = f(1);
@louisswarren
louisswarren / expandable_list.c
Created Mar 22, 2022
Linked lists can be expanded without invalidating pointers
View expandable_list.c
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
struct node {
struct node *next;
long v;
};
struct list {