Skip to content

Instantly share code, notes, and snippets.

MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXOdolllodkOKNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNx. cxXMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWo ........ .xNMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMO. ................ oNMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMx ..................... dMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMd ........................ ;WMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMk .......................... .NMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMO ............................. ;WMMMMMMMMMMMMMMMMMM
@IndianBoy42
IndianBoy42 / skull.py
Created July 16, 2021 05:24
Simulation of Skulls and Roses bluffing game
import numpy as np
from numba import jit, int32
from numpy.random import default_rng
rng = default_rng()
def startHands(numplayers, cards=4):
return np.stack((cards * np.ones((numplayers,)), np.ones((numplayers,))))
@IndianBoy42
IndianBoy42 / gauss_elim.rs
Created February 1, 2021 13:39
Now including a pure rust slice implementation
use ndarray::{azip, par_azip, s, Array, Array1, Axis, IntoNdProducer};
use std::ops::{DivAssign, MulAssign, SubAssign};
pub fn gauss_elim_rust(N: usize, M: usize, A: &mut [f32], B: &mut [f32]) {
assert_eq!(A.len(), N * N);
assert_eq!(B.len(), N * M);
for k in 0..(N - 1) {
let akk = A[k * N + k];
@IndianBoy42
IndianBoy42 / gausselim.cpp
Last active February 1, 2021 13:27
Simple impl of Gaussian Elimination in CPP
#include "gausselim.hpp"
#define A(I, J) (A_[I * N + J])
#define B(I, J) (B_[I * M + J])
void gauss_elim(int N, int M, float* restrict A_, float* restrict B_) {
for (int k = 0; k < N - 1; k++) {
for (int i = k + 1; i < N; i++) {
A(i, k) /= A(k, k);
}
@IndianBoy42
IndianBoy42 / gauss_elim.rs
Last active February 1, 2021 09:08
Naive-ish attempt to impl Gaussian Elimination in Rust+NDarray
use ndarray::{Axis, IntoNdProducer, azip, par_azip, s};
use std::ops::{DivAssign, SubAssign, MulAssign};
pub fn gauss_elim(mut A: ndarray::ArrayViewMut2<f32>, mut B: ndarray::ArrayViewMut2<f32>) {
assert_eq!(A.nrows(), B.nrows());
assert_eq!(A.nrows(), A.ncols());
let N = A.nrows();
let M = B.ncols();
cmake_minimum_required(VERSION 3.19)
project(PROJ1)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED True)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_EXTENSIONS ON)
set(CMAKE_C_EXTENSIONS ON)
@IndianBoy42
IndianBoy42 / oled.c
Created December 31, 2018 14:58
STM32F4 LL OLED library
#include <stdarg.h>
#include "oled.h"
#define FONT_WIDTH 5
#define FONT_HEIGHT 8
#include "oled_font.h"
#define RES_128X64
#ifdef RES_128X64
@IndianBoy42
IndianBoy42 / probability_models.py
Created November 30, 2016 17:14
Some random probability model stuff coded in Python+Numpy (+Matplotlib+itertools)
import numpy as np
import random
import matplotlib.pyplot as plt
import itertools
import simpsons_paradox_data as simp_para_data
def run():
print(bernoulli(0.6))
@IndianBoy42
IndianBoy42 / TCP Server
Created January 3, 2015 09:23
Playing around with TCP stuff in rust
//Server implemented as Trait to allow various forms of handling
pub trait Server
where Self: Send {
fn get_response(&self, &String) -> Option<String>; //Takes a message and returns a response
fn acceptor(&self) -> TcpAcceptor;
fn new(address: &str) -> Self;
fn start(&self) {
for stream in self.acceptor().incoming() {