Skip to content

Instantly share code, notes, and snippets.

// Ref: https://old.reddit.com/r/C_Programming/comments/1e30ce8/
#include <stddef.h>
#include <stdio.h>
#define S(s) (str){s, sizeof(s)-1}
typedef struct {
char *data;
ptrdiff_t len;
} str;
@skeeto
skeeto / quilt.c
Last active June 25, 2024 01:30
Quilt layout solver
// Quilt layout solver (example)
// $ cc -o quilt quilt.c
// Ref: https://old.reddit.com/r/algorithms/comments/1dn97c0
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#define countof(a) (ptrdiff_t)(sizeof(a) / sizeof(*(a)))
// Ref: https://old.reddit.com/r/C_Programming/comments/1dlc4kw
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define new(n, t) (t *)calloc(n, sizeof(t))
typedef struct node node;
struct node {
@skeeto
skeeto / squares.c
Created June 12, 2024 13:38
Flawless Squares
// Flawless Squares
// $ cc -fopenmp -O2 -o squares squares.c
// Ref: https://old.reddit.com/r/C_Programming/comments/1de40e0
// This is free and unencumbered software released into the public domain.
#include <stdio.h>
int main(void)
{
#pragma omp parallel for schedule(dynamic, 100000)
for (long long root = 1; root < 3037000500; root++) {
@skeeto
skeeto / kanzi.cpp
Last active May 31, 2024 15:50
Kanzi unity build
// $ c++ -o kanzi kanzi.cpp
#define WIN32_LEAN_AND_MEAN // avoids std::byte conflicts
#include "src/app/BlockDecompressor.cpp"
#include "src/app/Kanzi.cpp"
#include "src/app/InfoPrinter.cpp"
#include "src/app/BlockCompressor.cpp"
#include "src/transform/BWTS.cpp"
#include "src/transform/BWTBlockCodec.cpp"
#include "src/transform/SBRT.cpp"
#include "src/transform/ZRLT.cpp"
@skeeto
skeeto / arena-commit.c
Created May 25, 2024 00:43
Growing arena persisting commit level through scratch copies
#define assert(c) while (!(c)) __builtin_unreachable()
#define new(a, n, t) (t *)alloc(a, n, sizeof(t), _Alignof(t))
enum { PAGESIZE = 1<<12 };
typedef signed int b32;
typedef signed int i32;
typedef char byte;
typedef signed long long iz;
typedef unsigned long long uz;
@skeeto
skeeto / lisp.c
Created May 10, 2024 22:39
Mini lisp-like interpreter
// Mini lisp-like interpreter
// $ cc -o lisp lisp.c
// $ ./lisp "(cons (+ 1 2 3 (* -40 million)) (cdr (quote (1 2 3))))"
// (-39999994 2 3)
// This is free and unencumbered software released into the public domain.
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#define assert(c) while (!(c)) *(volatile int *)0 = 0
@skeeto
skeeto / triangle.c
Last active April 27, 2024 06:22
Draw a triangle on Windows using OpenGL 1.1
// Draw a triangle on Windows using OpenGL 1.1
// $ gcc -mwindows -o triangle triangle.c -lopengl32
// This is free and unencumbered software released into the public domain.
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <GL/gl.h>
#define countof(a) (int)(sizeof(a) / (sizeof(*(a))))
static LRESULT CALLBACK handler(HWND h, UINT msg, WPARAM wparam, LPARAM lparam)
@skeeto
skeeto / png.c
Last active April 24, 2024 03:41
Small, no-dependency 8-bit indexed PNG writer
// 8-bit indexed PNG writer, no dependencies
// $ cc -o png png.c
// $ ./png >image.png
// This is free and unencumbered software released into the public domain.
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
static uint32_t adler32(uint32_t sum, uint8_t *buf, ptrdiff_t len)
{
@skeeto
skeeto / twoSum.c
Created April 14, 2024 15:20
"Two Sum" benchmark
// "Two Sum" benchmark
// $ cc -O1 -nostartfiles -o twoSum.exe twoSum.c
// $ cl /O1 twoSums.c /link /subsystem:console kernel32.lib libvcruntime.lib
// Ref: https://old.reddit.com/r/C_Programming/comments/1c36391
#include <stddef.h>
#include <stdint.h>
#include <string.h>
#define assert(c) while (!(c)) *(volatile int *)0 = 0
#define new(a, t, n) (t *)alloc(a, sizeof(t), _Alignof(t), n)