Skip to content

Instantly share code, notes, and snippets.

@nikhilr612
nikhilr612 / cw_prng.c
Last active March 6, 2024 06:56
Collatz-Weyl Chaotic Pseudo-random number generator (64-bit)
#include "cw_prng.h"
#include <stdio.h>
uint64_t cw_g64(struct CW_Rng* rng) {
rng -> weyl += rng -> s;
uint64_t out = rng -> xbits;
rng -> abits += out;
out = (out >> 1)*(rng -> abits | 1);
out ^= rng -> weyl;
rng -> xbits = out;
@nikhilr612
nikhilr612 / brainfuck.c
Created October 21, 2023 10:12
A simple brainfuck interpreter written in C
#include "brainfuck.h"
#define CHECK_DP(interp) ((interp -> data_pointer) < (interp -> memsize))
int bf_init(bf_Interpreter* interp, const char* fpath, size_t memsize) {
// Allocate memory
unsigned char* mem_alloc;
mem_alloc = (unsigned char*) calloc(memsize, sizeof(unsigned char));
if (mem_alloc == NULL) {
printf("Failed to allocate %d chars of memory\n", memsize);
return FAILURE;
@nikhilr612
nikhilr612 / sexpr_parser.py
Created September 9, 2023 14:29
A toy S-expressions parser in pure python
#
# A toy S-expressions lexer and parser written in pure python.
# Copyright 2023 Nikhil R.
#
from collections import namedtuple
from io import StringIO
T_INT_LITERAL = 1;
T_FLOAT_LITERAL = 2;
@nikhilr612
nikhilr612 / ansiview.py
Created February 10, 2022 09:28
Menu-based program to display images in a console using character control characters to change foreground colours.
import os
import sys
import time
from PIL import Image
import ctypes
h_stdout = ctypes.windll.kernel32.GetStdHandle(ctypes.c_long(-11));
ctypes.windll.kernel32.SetConsoleMode(h_stdout, ctypes.c_short(0x200));
def _win_mov_cursor(x, y):