Skip to content

Instantly share code, notes, and snippets.

Alex Bowe alexbowe

Block or report user

Report or block alexbowe

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
alexbowe /
Created Mar 28, 2010
Python function for adding an instance method to an object
def add_method(obj, f, fname):
"""Adds the instance method from function f to the object obj, callable by fname (i.e. obj.fname())
def func(self):
print 'test'
add_method(myObject, func, 'newmethodname')
# Extracting nounphrase chunks from a parse tree
# from
# for each noun phrase sub tree in the parse tree
for subtree in tree.subtrees(filter=lambda t: t.node == 'NP'):
# print the noun phrase as a list of part-of-speech tagged words
print subtree.leaves()
alexbowe / num_to_bin_string.rb
Created Nov 22, 2010
Method to convert a number to a binary string
View num_to_bin_string.rb
class Fixnum
def to_bin_s
return '0' if self == 0
s = ''
n = self
while n > 0
s = (n % 2).to_s << s
n = n >> 1
alexbowe / three_test.rb
Created Nov 23, 2010
Tests a regular expression for recognising binary numbers that are divisible by 3.
View three_test.rb
your_re = // # <= YOUR REGEX GOES BETWEEN THESE SLASHES*************************
#Example: /.*/
# This wraps your regex so the whole binary string has to match it
@re = /^(#{your_re})$/
# Helper code to convert numbers to binary strings
class Fixnum
def to_bin_s
return '0' if self == 0
s = ''
alexbowe / my_binary.erl
Created Apr 2, 2011
Provides some idiomatic tools to help when programming using Erlang's Binary primitive type.
View my_binary.erl
break(Blocksize, Bin) ->
<<Head:Blocksize/bits, Rest/bits>> = Bin,
{Head, Rest}.
foreach(_, _, <<>>) -> ok;
foreach(F, Blocksize, Bin) ->
alexbowe / popcount.erl
Created Apr 4, 2011
Popcount table generated at compile-time using ct_expand. See
View popcount.erl
-compile({parse_transform, ct_expand}).
-export([popcount16/1, popcount32/1]).
-define(TABLE(B), ct_expand:term( popcount_table:gen_table(B) )).
-define(TABLE16, ct_expand:term( ?TABLE(16) )).
popcount16(V) -> erlang:element(V+1, ?TABLE16).
popcount32(V) -> popcount16( V band 16#ffff )
alexbowe / popcount_table.erl
Created Apr 4, 2011
Generates a tuple of popcounts.
View popcount_table.erl
gen_table(Bits) -> gen_table(1, 2 bsl (Bits - 1), {0}).
gen_table(Stop, Stop, Table) -> Table;
gen_table(Value, Stop, Table) ->
New = (Value band 1) + erlang:element((Value bsr 1) + 1, Table),
NewTable = erlang:append_element(Table, New),
gen_table(Value + 1, Stop, NewTable).
alexbowe / gist:907073
Created Apr 7, 2011
15bit popcount from Hacker's Delight, p. 72
View gist:907073
//Special for 15-bit values on 64bit processors
//with fast multiplication
//From Hacker's Delight, p. 72
inline uint32_t popcount15(uint32_t x)
uint64_t y;
y = x * 0x0002000400080010;
y = y & 0x1111111111111111;
y = y * 0x1111111111111111;
y = y >> 60;
alexbowe / gist:951513
Created May 2, 2011
Computing Theory Question
View gist:951513
The following is an interesting problem I found in the book Introduction to Computer Theory (2nd edition),
by Daniel Cohen, Wiley, 1997. See what you think ...
“ In the English language, we can observe that some adjectives apply to themselves. For example, the word
“short” is a fairly short word. We mighy say, “short” is short. Also, the adjective “polysyllabic” is indeed
polysyllabic. Some other possible adjectives of this type are “unfrequent”, “melodious”, “arcane”,
“unhyphenated”, “English”, “non-palindromic”, and “harmless”. Let us call all these adjectives that describe
themselves homothetic. Let us call all other adjectives (those that do not decribe themselves) heterothetic.
For example, the words “gymnastic”, “myopic”, and “recursive” are all heterothetic adjectives The word
“heterothetic” is an adjective, and therefore like all adjectives it is either homothetic or heterothetic.
alexbowe /
Created Jul 28, 2011
Ranks k-composites that sum to n
def gam_to_lam(c, n):
i, m = 0, 0
L = [0] * n
while 1:
i = i+1
if c[i-1] > 0:
for j in range(1, c[i-1] + 1):
m = m + 1
L[m-1] = i
You can’t perform that action at this time.