Skip to content

Instantly share code, notes, and snippets.

View felipecrv's full-sized avatar

Felipe Oliveira Carvalho felipecrv

View GitHub Profile
@felipecrv
felipecrv / union_find.ml
Last active June 27, 2022 13:03
Union-Find data-structure in OCaml
type 'a member =
{ mutable parent : 'a member
; mutable rank : int
; value : 'a
}
let make_set value =
let rec m = { parent = m; rank = 0; value } in
m
;;
@felipecrv
felipecrv / Sampling.scala
Created June 30, 2022 06:53
Sampling and Shuffling
package rs.felipe.random
import java.util.Random
import scala.collection.mutable
import scala.collection.mutable.ArrayBuffer
object Sampling {
/**
* Randomly sample up to k items from a sequence.
@felipecrv
felipecrv / HalfSipHasher64.java
Last active June 11, 2023 16:40
Implementation of HalfSipHash-2-4-64 in Java.
/**
* Copyright (C) 2022 Felipe Oliveira Carvalho
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
@felipecrv
felipecrv / arrow.svg
Created July 14, 2023 18:30
Class and type predicate graph for Arrow C++
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@felipecrv
felipecrv / btree.js
Created April 1, 2018 13:32
In-memory B+ Tree implemented in Javascript with Flow type annotations
/* @flow */
const KEY_KIND_STRING = 1;
const KEY_KIND_NUMBER = 2;
const KEY_KIND_BOOL = 3;
const KEY_KIND_RECORD = 4;
type KeyKind = 1 | 2 | 3 | 4;
class KeyValue<K, V> {
key: ?K;
@felipecrv
felipecrv / cancellation.js
Created April 25, 2024 23:00
Concurrency Control for shared mutable state that gets mutated by asynchronous callbacks.
/* @flow */
export class CancellationToken {
source: CancellationTokenSource;
requestId: number;
constructor(source: CancellationTokenSource, requestId: number) {
this.source = source;
this.requestId = requestId;
}