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)
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
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}
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,
View constants.py
BOARD_SIZE = 8
FIRST_RANK = 1
LAST_RANK = BOARD_SIZE
PAWN_START = 2
KING_START_FILE = 5
KNIGHT, KING, BISHOP, ROOK, QUEEN, PAWN = (
'N', 'K', 'B', 'R', 'Q', 'P'
View account.py
from .base58 import ripple_base58_decode, ripple_base58_encode
from .util import binary_encode_variable_data
from .crypto import double_sha256_checksum
ACCOUNT_NUM_BITS = 160
ACCOUNT_NUM_BYTES = 20
def extract_checksum(account_msg):
return account_msg[-4:]
View simple_arith.py
from pyparsing import Word, alphas, oneOf, operatorPrecedence, opAssoc
operand = Word(alphas)
signop = oneOf('+ -')
multop = oneOf('* /')
plusop = oneOf('+ -')
ARITH_EXPR = operatorPrecedence( operand,
[(signop, 1, opAssoc.RIGHT),