Skip to content

Instantly share code, notes, and snippets.

View andlima's full-sized avatar

André Lima andlima

  • Rio de Janeiro, Brazil
View GitHub Profile
@andlima
andlima / scrape_letras_terra.py
Created April 7, 2012 03:59
Scrape letras.terra.com.br
"""
A short script that, given an artist, scrapes all his/her/their songs
from 'http://letras.terra.com.br'
Dependence: BeautifulSoup, to parse the lyrics from each song page.
Author: Andre Lima - http://github.com/andlima
Licensed under MIT License
@andlima
andlima / p2.py
Created May 27, 2012 23:41
Solução do P2 - 2016
def distance(points, i, j):
x1, y1 = points[i]
x2, y2 = points[j]
return ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5
def merge_root(root, i, j):
good, bad = sorted([root[i], root[j]])
bad_keys = [k for k, v in root.iteritems() if v == bad]
for key in bad_keys:
root[key] = good
@andlima
andlima / gist:2872210
Created June 5, 2012 02:43
MST - Kruskal
def distance(points, i, j):
x1, y1 = points[i]
x2, y2 = points[j]
return ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5
def find_root(height_and_parent, i):
hi, pi = height_and_parent[i]
if pi is None:
return i
return find_root(height_and_parent, pi)
@andlima
andlima / problem_c.py
Last active December 16, 2015 09:59
Google Code Jam 2013 - Qualification Round - Problem C
from bisect import bisect_left, bisect_right
def solve(numbers, a, b):
answer = bisect_right(numbers, b) - bisect_left(numbers, a)
return answer if answer > 0 else 0
def main():
numbers = [1, 4, 9]
previous = ('012', [''])
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@andlima
andlima / gist:1774060
Created February 8, 2012 21:34
Median of medians selection algorithm
int find_kth(int *v, int n, int k) {
if (n == 1 && k == 0) return v[0];
int m = (n + 4)/5;
int *medians = new int[m];
for (int i=0; i<m; i++) {
if (5*i + 4 < n) {
int *w = v + 5*i;
for (int j0=0; j0<3; j0++) {
int jmin = j0;