Skip to content

Instantly share code, notes, and snippets.

Avatar

Anthony Clays anthonyclays

View GitHub Profile
@anthonyclays
anthonyclays / server.py
Created Apr 12, 2019
Simple server that runs a process for each client connection
View server.py
#!/usr/bin/env python3.7
# -*- coding: utf-8 -*-
import asyncio
import click
async def copy(src, dst):
buf = await src.read(1024)
while buf:
dst.write(buf)
@anthonyclays
anthonyclays / minesweeper.py
Created Apr 18, 2017
Guesswork-free 3D minesweeper
View minesweeper.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from itertools import product, chain, count
import random, time
from z3 import *
N, M = 6, 11
View keybase.md

Keybase proof

I hereby claim:

  • I am anthonyclays on github.
  • I am anthonyclays (https://keybase.io/anthonyclays) on keybase.
  • I have a public key ASCkuz87qTzF5PVYgrNV8vypyCjhDFDm2MJwOWe6OpdBIQo

To claim this, I am signing this object:

View reveng_of_the_pancakes.pl
<>; # ignore first line of input
foreach(<>) {
chomp; # get rid of the newline
$t++; # increment case number (implicitly initialized to zero)
s/([+-])\1+/\1/g; # simplify stack of pancakes: consecutive similarly-facing pancakes are squashed together
s/\+$//; # if the last pancake is already facing the correct way: ignore it
$l=length; # get the height of the stack
print"Case #$t: $l\n" # print it
}
View meta_fizzbuzz.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from itertools import combinations
from operator import mul
def all_combinations(things):
for i in xrange(len(things), 0, -1):
for result in combinations(things, i):
yield result
@anthonyclays
anthonyclays / perfect_squares.rs
Created Sep 14, 2015
Fast perfect square test in Rust
View perfect_squares.rs
fn isqrt(n: usize) -> usize {
n == 0 && return n;
let mut s = (n as f64).sqrt() as usize;
s = (s + n / s) >> 1;
if s * s > n { s - 1 } else { s }
}
fn perfect_sqrt(n: usize) -> isize {
match n & 0xf {
0 | 1 | 4 | 9 => {
@anthonyclays
anthonyclays / partition.jl
Created Sep 11, 2015
Vector partitioning into n chunks
View partition.jl
chunks(l::AbstractVector, n::Int) = let part_l = length(l) / n
[let start = floor(Int, (i-1)*part_l + 1), stop = floor(Int, i*part_l);
l[start:stop] end for i in 1:n]
end
View sr830_repl.py
#!/usr/bin/env python
# encoding: utf-8
"""
Usage:
rlwrap ./srs_test.py
"""
import os
View generated_llvm
julia> code_llvm(g, (Int,))
define i64 @julia_g_20191(i64) {
top:
%1 = icmp sgt i64 %0, 0, !dbg !8
br i1 %1, label %L.preheader, label %L3, !dbg !8
L.preheader: ; preds = %top
%2 = add i64 %0, -1, !dbg !8
%3 = zext i64 %2 to i65
@anthonyclays
anthonyclays / typesort.jl
Last active Aug 29, 2015
Typelevel quicksort (and integer arithmetic) in Julia
View typesort.jl
#!/usr/bin/env julia
# Peano arithmetic (https://en.wikipedia.org/wiki/Peano_axioms)
abstract Natural <: Integer
immutable Zero <: Natural end
immutable Successor{P<:Natural} <: Natural end
# Define a total order relation
<(::Type{Zero}, ::Type{Zero}) = false
<{P<:Natural}(::Type{Zero}, ::Type{Successor{P}}) = true
You can’t perform that action at this time.