Skip to content

Instantly share code, notes, and snippets.

Avatar

Mark Jenkins markjenkins

View GitHub Profile
View contact.html
<p>
<a href="https://markjenkins.ca">Return to markjenkins.ca</a>
</p>
<p>
This contact form submits to my
<a href="mailto:mark@markjenkins.ca">mark@markjenkins.ca</a> email address.
</p>
@markjenkins
markjenkins / example_ballots.txt
Last active Aug 5, 2020
Election of a single candidate by HMAC
View example_ballots.txt
Voter code yS2MuD4+iPrmZOoSIY76qLCMQWS/wQxnql8MmpN9AUY= votes for Pirates
non interactively
echo -e "yS2MuD4+iPrmZOoSIY76qLCMQWS/wQxnql8MmpN9AUY=\nPirates" | python3 hmac_vote.py
interactively
python3 hmac_vote.py
What's your code? > yS2MuD4+iPrmZOoSIY76qLCMQWS/wQxnql8MmpN9AUY=
Your code is:
yS2MuD4+iPrmZOoSIY76qLCMQWS/wQxnql8MmpN9AUY=
View map_using_reduce.py
from functools import reduce
def map( func, iterable):
def f(a, b):
return a + [func(b)]
return reduce( f, iterable, [] )
View d4p1.py
#!/usr/bin/env python3
# Solution to http://adventofcode.com/2016/day/4 part 1
# Mark Jenkins <mark@markjenkins.ca>
from sys import stdin
from collections import Counter
from itertools import islice
CHECKSUM_SIZE = 5
View d3p1.py
#!/usr/bin/env python3
# functional solution to http://adventofcode.com/2016/day/3 part 1
# Mark Jenkins <mark@markjenkins.ca>
from sys import stdin
def possible_triangle(args):
assert(len(args)==3)
sum_args = sum(args)
@markjenkins
markjenkins / d2p1.py
Created Dec 8, 2016
Solution to http://adventofcode.com/2016/day/2 using reduce and accumulate
View d2p1.py
#!/usr/bin/env python3
# Solution to http://adventofcode.com/2016/day/2 part 1
# using reduce and accumulate for awesome functional programing style points
# Mark Jenkins <mark@markjenkins.ca>
from sys import stdin
from functools import reduce
from itertools import chain, accumulate, islice
@markjenkins
markjenkins / d1p2.py
Last active Dec 7, 2016
solution to https://adventofcode.com/2016/day/1 part 2, uses reduce(), nearly functional
View d1p2.py
#!/usr/bin/env python3
# solution to https://adventofcode.com/2016/day/1 part 2
# in a functional style with python 3.3+ enhanced accumulate() and dropwhile()
# Mark Jenkins <mark@markjenkins.ca>
from itertools import accumulate, dropwhile, chain
MOVEMENTS = ((0,1), (1,0), (0,-1), (-1,0))
DIRECTION_CHANGES = {"R": 1, "L": -1}
@markjenkins
markjenkins / d1p1.py
Created Dec 7, 2016
Functional solution to https://adventofcode.com/2016/day/1 part 1 with reduce() and lambda vs no lambda
View d1p1.py
#!/usr/bin/env python3
# Functional solution to https://adventofcode.com/2016/day/1 part 1
# with reduce() and lambda vs no lambda
# Mark Jenkins <mark@markjenkins.ca>
from functools import reduce
MOVEMENTS = ((0,1), (1,0), (0,-1), (-1,0))
DIRECTION_CHANGES = {"R": 1, "L": -1}
View first_querry_by_ip.py
from sys import argv
# tab separated input from processing apache logs with awk to just have relevant fields and tab separation
ips = set()
with file(argv[1]) as f:
for line in f:
ip, date, url = line.split('\t')
if ip not in ips:
print "%s\t%s" % (ip, date)
View update_glicko2_csv.py
#!/usr/bin/env python
# coding=UTF8
"""
Copyright (c) 2014 Rudolf Rocker Chess Club
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
You can’t perform that action at this time.