The goal of this repository is to share solutions to a common problem of traversing and annotating data-structures across a variety of programming languages.

Based on a immutable persistent Hash Array Mapped Trie (HAMT)
Minimal interface to the core HAMT implementation so that you can easily implement your own structures on top of it.

slidingwindow
Golang implementation of Sliding Window Algorithm for distributed rate limiting.
Installation
$ go get -u github.com/RussellLuo/slidingwindow
Design
slidingwindow is an implement

xxhash
xxhash is a Go implementation of the 64-bit xxHash algorithm, XXH64. This is a high-quality hashing algorithm that is much faster than anything in the Go standard library.
This package provides a straightforw

Downsampling Algorthim
The Golang implemtation for downsampling time series data algorthim
Downsampling Algorthim
Background
Acknowledgement
Usage
Peformance
Profiling
Benchmark

low
low level data type and utils in Golang.
A stable low level function set is the basis of a robust architecture. It focuses on stability and requires high test coverage.
Status
This project has

go-lcss
Fast Longest Common Substring algorithm in Go.
Overview • How To Use • Installation • Contributions • License
Overview
Longest Common Substring (don't confuse with Longest Common Subs

The Algorithms - Go
Algorithms implemented in Go (for education)
These algorithms are for demonstration purposes only. There are many sort implementations in the Go standard library that may have better perfo

go-tsne
A Go implementation of t-Distributed Stochastic Neighbor Embedding (t-SNE), a prize-winning technique for dimensionality reduction particularly well suited for visualizing high-dimensional datasets.

geohashtree
What is it?
This library is designed to construct and use large k/v stores to do super quick point-in-polygon queries. This isn't something that I haven't tried before in go but this time with a m

hashmap
Overview
A Golang lock-free thread-safe HashMap optimized for fastest read access.
Usage
Set a value for a key in the map:
m := &HashMap{}
m.Set("amount", 123)
Read a value for

ppds
Pretty Print Data Structures
Stacks, queues, trees and linked lists are data structures that you might find yourself working with quite often. This library lets you pretty print these with minimum effort. Certa

kmeans
k-means clustering algorithm implementation written in Go
What It Does
k-means clustering partitions a multi-dimensional data set into k clusters, where each data point belongs to the cluster with the

go-algorithms
go-algorithms - implementation of different algorithms and data structures with golang.
Usage
Clone https://github.com/0xAX/go-algorithms.git repo, it must be in your $GOPATH.

hamt
Immutable and Memory Efficient Maps and Sets in Go.
This package hamt provides immutable collection types of maps (associative arrays) and sets implemented as Hash-Array Mapped Tries (HAMTs). All operations o

wikiracer
Finds a path between two Wikipedia articles, using only Wikipedia links.
Approach
Wikiracer runs a one-way parallel BFS (Breadth First Search) from the given start URL to crawl the graph of Wikiped

Clusters
Go implementations of several clustering algoritms (k-means++, DBSCAN, OPTICS), as well as utilities for importing data and estimating optimal number of clusters.
The reason
This library was built

Just write your own map wrappers
mapgen
A tool which generates thread safe maps for Go.
Features:
Supports any key/value pair supported by Go's native maps
Allows complex operations via Lock() and Unlock()
Gen

Features
In-Memory or Redis based storage
Concurrency-safe
Put, Take, Count, DynamicFill, and many more primitives
Designed for distributed systems
Well tested
Well documented
Install

FlipCounter
Data-structure with 5 byte keys and 3 bytes counters (64 bits per entry).
The 3 byte counter (24 bit) uses 23 for counting (guaranteeing 100% accurate counting per key up to (2^23)-1 ==> 8388607 hits.
T

HKSample
An algorithm to sample a complete session by hashing its key, and then we see if the keys fits in one the buckets within the sampling percentage.
Installation
go get github.com/lafikl/hksample

randmap
go get github.com/lukechampine/randmap
randmap provides methods for (efficiently) accessing random elements of maps, and iterating through maps in random order. Here is a blog post that dives deeper into ho

Go Package: iter
Get:
go get -u github.com/cstockton/go-iter
Example:
func Example() {
v := []interface{}{"a", "b", []string{"c", "d"}}
err := iter.Walk(v, func(el iter.Pair) error {
// check for

Go rate limiter
This package provides a Golang implementation of the leaky-bucket rate limit algorithm. This implementation refills the bucket based on the time elapsed between requests instead of requiring an interval

Arithmetic parser
This library parses and solves a mathematical expression.
It uses a Shunting-Yard algorithm (aka Reverse-Polish notation).
Usual mathematic constants and functions are defined in this package (see

LAPJV - Go Implementation
This repository is the Golang implementation of the LAPJV algorithm for assignment problem and includes tools to ease testing and library usage.
Overview
The repository contains