Skip to content

Instantly share code, notes, and snippets.

View christian-oudard's full-sized avatar

Christian Oudard christian-oudard

View GitHub Profile
@christian-oudard
christian-oudard / term_colors.py
Created October 28, 2009 14:54
Terminal output colors in python
from __future__ import print_function
"""
Utilities for 256 color support in terminals.
Adapted from:
http://stackoverflow.com/questions/1403353/256-color-terminal-library-for-ruby
The color palette is indexed as follows:
0-15: System colors
#!/bin/bash
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
PARENT_JOB=pstat_master_unittest
KEY_PATH=$HOME/policystat/fabric/pstat_dev.key
PROJECT_ROOT=/var/www/pstattest.com/
if [ ! -z "$WORKSPACE" ]; then
WORKSPACE=/vol/fs/var/lib/hudson/home/jobs/pstat_master_deploy/workspace
"""
Flatten a nested list structure.
* Works for nested structures of lists, tuples, generators, or any other iterable.
* Special-cases string types and treats them as non-iterable.
* Is not limited to the system recursion limit.
* Yields items from the structure instead of constructing a new list, and can
work on non-terminating generators.
This is basically a non-recursive version of the following:
@christian-oudard
christian-oudard / gfm.py
Created June 29, 2010 18:51
Github Flavored Markdown in Python
import re
from hashlib import md5
def gfm(text):
# Extract pre blocks.
extractions = {}
def pre_extraction_callback(matchobj):
digest = md5(matchobj.group(0)).hexdigest()
extractions[digest] = matchobj.group(0)
return "{gfm-extraction-%s}" % digest
@christian-oudard
christian-oudard / palindromes
Created March 15, 2011 16:51
Palindrome number investigations
def digits_of(n, base=10):
"""
Split the number into its digits.
>>> digits_of(0)
[0]
>>> digits_of(123)
[1, 2, 3]
>>> digits_of(0xabc, base=16)
[10, 11, 12]
@christian-oudard
christian-oudard / luhn.py
Created February 8, 2012 21:11
Luhn validation algorithm for credit cards.
"""
Python implementation of the Luhn algorithm.
Refer to: http://en.wikipedia.org/wiki/Luhn_algorithm
>>> is_luhn_valid(79927398713)
True
>>> is_luhn_valid(79927398714)
False
>>> is_luhn_valid(4532990475689429)
import Data.List.Zipper as Z
main = do
let string = "yabbadabbadoo"
print $ maximum $ palindromeSizes string
-- Find the size of the largest palindrome centered at each location in
-- a string. There will be 2*n-1 locations, because we count even and odd
-- centers. Go along the zipper, checking the sizes of palindromes to the left
-- and right as we go.

Please publicly post the following Gist, and name it keybase.md

Keybase proof

I hereby claim:

  • I am christian-oudard on github.
  • I am christianoudard (https://keybase.io/christianoudard) on keybase.
  • I have a public key ASDUW30p7kTHKwf_VGcYiMCC_iPMzpJVFihxm4EGJG3_Gwo
@christian-oudard
christian-oudard / braille.py
Created June 25, 2020 23:35
Use unicode braille characters to draw a picture in the terminal
import math
import shutil
# Braille bit order:
# 0 3
# 1 4
# 2 5
# 6 7
# bit: (x, y)
@christian-oudard
christian-oudard / black47.py
Created September 4, 2020 17:46
Brute force solution to level 47 in Black, by Bart Bonte.
numbers = [4, 6, 1, 3, 4, 4, 5, 3, 2, 3, 5, 2, 2, 4, 2, 6]
size = len(numbers)
path = []
def explore(pos):
num = numbers[pos]
print('explore', pos, num)