Skip to content

Instantly share code, notes, and snippets.

View bhatiaabhinav's full-sized avatar
🏠
Working from home

Abhinav Bhatia bhatiaabhinav

🏠
Working from home
View GitHub Profile
@bhatiaabhinav
bhatiaabhinav / 100-prisoners.jl
Last active August 4, 2022 23:07
Julia implementation of 100-prisoners cycle-following strategy.
"""
Decription: A simulation of the cycle-following strategy for the 100-prisoners problem (https://en.wikipedia.org/wiki/100_prisoners_problem), which provides a survival probability of more than 30%.
Author: Abhinav Bhatia <abhinav.bhatia.me@gmail.com>
"""
using Random
using Base.Threads: @threads, Atomic, atomic_add!
"""returns whether successful or not"""
function simulate_cycle_strategy_for_all_prisoners(game::Vector{Int})::Bool
@bhatiaabhinav
bhatiaabhinav / wgan-gp.jl
Created July 13, 2022 04:48
Julia implementation of WGAN-GP using Flux and Zygote
using Flux
using Flux: update!
using Zygote
using StatsBase
"""
WGAN with gradient penalty. See algorithm 1 in https://proceedings.neurips.cc/paper/2017/file/892c3b1c6dccd52936e27cbd0ff683d6-Paper.pdf. The following code is almost line by line identical.
"""
function train_WGAN_GP(𝐺, 𝐷, 𝐗::Array{Float32, N}, latent_size, num_iters, device_fn; m=32, λ=10f0, ncritic=5, α=0.0001, β₁=0, β₂=0.9) where N
n = size(𝐗)[end] # length of dataset
@bhatiaabhinav
bhatiaabhinav / fourier_art.py
Last active July 1, 2019 13:46
Generate random or guided Fourier art.
'''
A script to Fourier-ize drawings made using mouse/stylus. Or simply generate random art.
Author: Abhinav Bhatia
Email: bhatiaabhinav93@gmail.com
Examples: https://i.imgur.com/c5EKAh6.gif, https://i.imgur.com/kpYHxho.gif
'''
import sys
import time
import numpy as np
import matplotlib.pyplot as plt
@bhatiaabhinav
bhatiaabhinav / rotate.c
Created July 15, 2014 17:24
Demonstrates how to rotate a sqaure 2D array by 90 degrees clockwise. Uses concept of geometric transformation.
#include <stdio.h>
void rotateRight90(int* sourceArray, int* destArray, int side)
{
int srcY, srcX, destY, destX, elem;
for (srcY = 1; srcY <= side; srcY++)
{
for (srcX = 1; srcX <= side; srcX++)
{
@bhatiaabhinav
bhatiaabhinav / linklist.c
Created July 7, 2014 15:16
Linklist & Stack Implementation plus some useful functions
@bhatiaabhinav
bhatiaabhinav / DFA.c
Last active January 31, 2024 16:36
Deterministic Finite Automata Implementation in C
#include "DFA.h"
#include <stdlib.h>
#include <string.h>
void dfa_makeNextTransition(DFA* dfa, char c)
{
int transitionID;
DFAState* pCurrentState = dfa->states[dfa->currentStateID];
for (transitionID = 0; transitionID < pCurrentState->numberOfTransitions; transitionID++)
{
@bhatiaabhinav
bhatiaabhinav / prettyPrint.c
Created June 30, 2014 07:59
A Simple Application which demonstrates how to pretty print a tree
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct _Node;
typedef struct _Node Node;
struct _Node
{