Skip to content

Instantly share code, notes, and snippets.

View rrampage's full-sized avatar

Raunak Ramakrishnan rrampage

View GitHub Profile
@rrampage
rrampage / Sort by 1's.py
Last active December 18, 2015 12:19
Given a positive integer n, sort numbers from 1 to n with increasing number of bits set. If two numbers have same number of bits set, the lower number will come first. (From Codebunk FB Page)
"""Using the implementation from Wikipedia: https://en.wikipedia.org/wiki/Hamming_weight#Efficient_implementation """
def hamming_weight(n):
t1 = n - ((n>>1) & 0x55555555)
t2 = (t1 & 0x33333333) + ((t1 >> 2) & 0x33333333)
return ((((t2 + (t2 >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24,n)
def hamming_sort(n):
return [x[1] for x in sorted(map(hamming_weight,xrange(1,n+1)))]
@rrampage
rrampage / keybase.md
Created October 13, 2017 14:27
Keybase

Keybase proof

I hereby claim:

  • I am rrampage on github.
  • I am raunak (https://keybase.io/raunak) on keybase.
  • I have a public key ASBUeum7e_np2neA9YXi60A7YLGFHk9yI9n3VCNsKgQSIwo

To claim this, I am signing this object:

@rrampage
rrampage / check_perm.py
Last active July 14, 2018 17:11
Check if two strings are anagrams in O(n) time
# Check if two strings are permutations (anagrams) of each other
# For this example, using just the lowercase ASCII letters as the alphabet
# Step 1 : Generate k primes using Sieve of Erasthothenes
# Step 2 : Map characters in alphabet to prime
# Step 3 : Compare the products of the 2 strings
# Why does this work?
# - Multiplication is commutative i.e a * b * c = c * a * b
# - Fundamental theorem of arithmetic i.e every natural number can be expressed uniquely as either a prime or a product of primes (https://en.wikipedia.org/wiki/Fundamental_theorem_of_arithmetic)
from string import ascii_lowercase as ALPHABETS
@rrampage
rrampage / wayback.sh
Created September 28, 2023 10:23
Search wayback machine for URL
#!/bin/bash
# Search Wayback machine for a particular URL
# Add to your ~/.bashrc or ~/.bash_profile
# Needs `jq` and `curl` to work
if [[ -z $1 ]]; then
echo "Usage: $0 URL";
else
curl "http://web.archive.org/cdx/search/cdx?url=$1*&output=json&fl=original,timestamp" 2> /dev/null | jq '.[1:][] |"https://web.archive.org/web/" +.[1] + "/" + .[0]' 2> /dev/null;
fi
@rrampage
rrampage / symbolic_differentiator.go
Last active October 10, 2023 22:32
Symbolic Differentiator
package main
import (
"fmt"
"regexp"
"strconv"
)
var polyRegex = regexp.MustCompile(`\s*(?P<coef>[+-]?[0-9]*)?\s*\*?((?P<var>[a-z])?\s*(\^(?P<pow>[+-]?[0-9]+))?)?\s*`)
var wsRegex = regexp.MustCompile(`\s+`)
@rrampage
rrampage / backprop.py
Last active February 28, 2024 22:08
Arena stuff
# %%
import os
os.environ["KMP_DUPLICATE_LIB_OK"] ="TRUE"
import sys
import re
import time
import torch as t
import numpy as np
from pathlib import Path