Skip to content

Instantly share code, notes, and snippets.

View omaraflak's full-sized avatar
👨‍💻
hey you

Omar Aflak omaraflak

👨‍💻
hey you
View GitHub Profile
@omaraflak
omaraflak / main.cpp
Last active March 23, 2024 14:44
Image convolution in C++ + Gaussian blur
#include <iostream>
#include <vector>
#include <assert.h>
#include <cmath>
#include <png++/png.hpp>
using namespace std;
typedef vector<double> Array;
typedef vector<Array> Matrix;
@omaraflak
omaraflak / Makefile
Created February 16, 2021 21:32
Rotating 3D Cube - SDL2
all:
g++ main.cpp -o main -std=c++11 `sdl2-config --cflags --libs`
./main
@omaraflak
omaraflak / oracle.py
Last active February 13, 2024 16:16
Based on Aaronson Oracle
import sys
import getch
from collections import defaultdict
class Oracle:
def __init__(self, window_size: int):
self.window_size = window_size
self.window: str = ''
self.patterns: defaultdict[str, dict[str, int]] = defaultdict(lambda: defaultdict(int))
<canvas id="canvas"></canvas>
<script>
const WIDTH = 1500
const HEIGHT = 800
const canvas = document.getElementById("canvas")
const ctx = canvas.getContext("2d")
canvas.width = WIDTH
canvas.height = HEIGHT
@omaraflak
omaraflak / automata.py
Last active January 10, 2024 00:39
Wolfram Cellular Automata
def print_cells(cells: list[int]):
print(''.join('■' if i == 1 else ' ' for i in cells))
def next_step(cells: list[int], rules: list[int]) -> list[int]:
new_cells: list[int] = [False] * len(cells)
for i in range(len(cells)):
left = cells[(i - 1) % len(cells)]
right = cells[(i + 1) % len(cells)]
idx = int(''.join([str(left), str(cells[i]), str(right)]), 2)
import numpy as np
import matplotlib.pyplot as plt
width = 300
height = 200
camera = np.array([0, 0, 1])
ratio = float(width) / height
screen = (-1, 1 / ratio, 1, -1 / ratio) # left, top, right, bottom
@omaraflak
omaraflak / cv2_canvas.py
Created August 22, 2023 15:53
cv2 canvas
import cv2
import numpy as np
size = 28
drawing = False
win_name = "Draw digit"
def draw(event, x, y, flags, *param):
global drawing
if event == cv2.EVENT_LBUTTONDOWN:
from layer import Layer
import numpy as np
# inherit from base class Layer
class FCLayer(Layer):
# input_size = number of input neurons
# output_size = number of output neurons
def __init__(self, input_size, output_size):
self.weights = np.random.rand(input_size, output_size) - 0.5
self.bias = np.random.rand(1, output_size) - 0.5
class Network:
def __init__(self):
self.layers = []
self.loss = None
self.loss_prime = None
# add layer to network
def add(self, layer):
self.layers.append(layer)
import numpy as np
from network import Network
from fc_layer import FCLayer
from activation_layer import ActivationLayer
from activations import tanh, tanh_prime
from losses import mse, mse_prime
# training data
x_train = np.array([[[0,0]], [[0,1]], [[1,0]], [[1,1]]])