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
@rrampage
rrampage / http.S
Last active June 4, 2025 14:43
HTTP server in ARM assembly
.equ SYS_READ, 63
.equ SYS_WRITE, 64
.equ SYS_EXIT, 93
.equ SYS_SOCKET, 198
.equ SYS_BIND, 200
.equ SYS_LISTEN, 201
.equ SYS_ACCEPT, 202
.equ SYS_CLOSE, 57
.equ SYS_OPENAT, 56
.equ SYS_SENDFILE, 71
@rrampage
rrampage / snek.zig
Last active June 23, 2025 16:06
Snake in a QR code!
// Snake for Linux terminal
// Fits in a QR code!
// Compile with:
// zig build-exe snek.zig -O ReleaseSmall -target x86_64-linux -fstrip -flto -fsingle-threaded -femit-bin=snek_x64
// zig build-exe snek.zig -O ReleaseSmall -target aarch64-linux -fstrip -flto -fsingle-threaded -femit-bin=snek_aarch64
// Run `sstrip -z` from https://www.muppetlabs.com/~breadbox/software/elfkickers.html to reduce binary size even further
// Currently, snek_x64 is 2616 bytes and snek_aarch64 is 2941 bytes
// Threshold for a binary QR code is 2953 bytes
// Encode using:
// qrencode -8 -r snek_aarch64 -o qr_aarch64.png
@rrampage
rrampage / teensy.S
Created June 25, 2025 20:43
Handcrafted Elf Binary from assembly (without linker)
/*
Teensy Elf using GNU as and objcopy
as -o teensy.o teensy.S && objcopy -O binary teensy.o teensy.bin && chmod +x teensy.bin
References:
Elf Format details: https://gist.github.com/x0nu11byt3/bcb35c3de461e5fb66173071a2379779
Build a Teensy Elf (x86) file: https://www.muppetlabs.com/~breadbox/software/tiny/teensy.html
Adding Elf headers using GNU as: https://stackoverflow.com/q/77244360
*/