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
alexbowe / funky_typedef.c
Last active Dec 20, 2015
C function pointer typedef example (for nicer variable declarations).
View funky_typedef.c
/*
I have read a bunch of posts about function pointers,
such as http://denniskubes.com/2013/03/22/basics-of-function-pointers-in-c/
but I rarely see this *one weird trick*.
It is C's (admittedly clunky) syntax for typedefing a function pointer of a given signiature.
Hide the clunkiness in the typedef to keep your code tidy and maintainable.
*/
#include <stdio.h>
@alexbowe
alexbowe / int_mapper_one_liner.py
Created Aug 17, 2013
A shorthand way to get a unique integer mapper in Python
View int_mapper_one_liner.py
# here is a tidy way to get a hashable object (such as a word) to map to a unique int in python
from collections import defaultdict
mapper = defaultdict(lambda: len(mapper))
mapper["hello"] # 0
mapper["world"] # 1
mapper["and"] # 2
mapper["hello"] # 0
mapper["alex"] # 3
@alexbowe
alexbowe / 750kotoba.html
Created Jan 11, 2014
Example of using TinySegmenter.js to tokenize Japanese and provide the word count of the input from a textbox.
View 750kotoba.html
<!DOCTYPE html>
<html>
<head>
<!-- http://chasen.org/~taku/software/TinySegmenter/ -->
<script type="text/javascript" src="tiny_segmenter.js" charset="UTF-8"></script>
<script>
var segmenter = new TinySegmenter();
function countWords() {
s = document.getElementById("inputText").value;
@alexbowe
alexbowe / tweet_finder.py
Last active May 17, 2017
Find the Nth Tweet from your Twitter archive .csv file
View tweet_finder.py
# To run, from shell type: python tweet_finder.py
# Must be run in the same directory as the downloaded csv file.
import csv
# Modify this number if you want a different nth Tweet
# Should be 1-based (i.e. first tweet is the 1th, not 0th)
num = 40000
# Change the path if you want to run it from a different directory
path = "tweets.csv"
@alexbowe
alexbowe / streams.py
Created Apr 23, 2011
Lazy functional style streams for Python
View streams.py
null_stream = (None, None)
def map(f, stream):
if stream is null_stream: return null_stream
return (f(head(stream)), lambda: map(f, tail(stream)))
def reduce(f, result, stream):
if stream is null_stream: return result
return reduce(f, f(result, head(stream)), tail(stream))
@alexbowe
alexbowe / tree_iterators.py
Last active Jun 6, 2019
Method to simplify many programming interview tree questions.
View tree_iterators.py
'''
Interview hack: Memorize preorder/inorder/postorder tree ITERATORS (no recursion) and their reverses.
It simplifies a disproportionate number of questions to simple for loops (see below).
I consider the implementations below the simplest way to memorize the iterative tree traversal algorithms,
because they are so similar to each other, and to their respective recursive versions.
Notes:
- We only visit a node after we have expanded its children (i.e. added them to the stack) in the desired order.
- `x is curr` does the expanded flagging for us, because we always expand the current node.
@alexbowe
alexbowe / nltk-intro.py
Created Mar 21, 2011
Demonstration of extracting key phrases with NLTK in Python
View nltk-intro.py
import nltk
text = """The Buddha, the Godhead, resides quite as comfortably in the circuits of a digital
computer or the gears of a cycle transmission as he does at the top of a mountain
or in the petals of a flower. To think otherwise is to demean the Buddha...which is
to demean oneself."""
# Used when tokenizing words
sentence_re = r'''(?x) # set flag to allow verbose regexps
([A-Z])(\.[A-Z])+\.? # abbreviations, e.g. U.S.A.
You can’t perform that action at this time.