Skip to content

Instantly share code, notes, and snippets.

Avatar

Alex Bowe alexbowe

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 / 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.
@alexbowe
alexbowe / tree_iterators.py
Last active Aug 6, 2020
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.
You can’t perform that action at this time.