Skip to content

Instantly share code, notes, and snippets.

type Square = number;
type Piece = 'p' | 'n' | 'b' | 'r' | 'q' | 'k' |
'P' | 'N' | 'B' | 'R' | 'Q' | 'K';
interface Board {
turn: boolean;
fmvn: number;
pieces: {
[s: number]: Piece
@niklasf
niklasf / .gitignore
Last active September 22, 2020 15:16
Sierpinski triangle generator
/target
@niklasf
niklasf / asyncio-private-loop.py
Last active September 23, 2019 19:36
A ChildWatcher that does not require the asyncio loop to be running in the main thread
#!/usr/bin/python
import asyncio
import os
import sys
import threading
import time
import warnings
@niklasf
niklasf / bench-parallel.sh
Created April 6, 2018 10:42 — forked from ianfab/bench-parallel.sh
bench script
#!/bin/bash
if [[ $# -ne 3 ]]; then
echo "usage:" $0 "base test n_runs"
echo "example:" $0 "./stockfish_base ./stockfish_test 10"
exit 1
fi
base=$1
test=$2
n_runs=$3
@niklasf
niklasf / tbdep.py
Created January 26, 2018 15:30
Create a Makefile for Syzygy tabebase generation
import sys
import chess.syzygy
import itertools
PCHR = chess.syzygy.PCHR
NORMAL = set(chess.syzygy.filenames())
def swap(egname):
w, b = egname.split("v")
@niklasf
niklasf / pgn-codebook.py
Last active March 28, 2023 14:26
Experiment with PGN compression. Usage: python pgn-codebook.py corpus.pgn
import chess.pgn
import huffman
import sys
# https://github.com/flok99/feeks/blob/master/psq.py
PSQT = {
chess.PAWN: [
0, 0, 0, 0, 0, 0, 0, 0,
50, 50, 50, 50, 50, 50, 50, 50,
@niklasf
niklasf / 3-4-5.atbw.md5
Created November 21, 2016 17:01
Atomic syzygy tablebase stats
5f09f78f986d440d5fda3cd28b335eb3 KBBBvK.atbw
8314a33d3042c8ab76ca365d492c7fd2 KBBNvK.atbw
2087b9823af4ca34e0f1692b917650e5 KBBPvK.atbw
0b12a60dcd347e5db4dcb3a19a351b1f KBBvK.atbw
6d57f8073f620c5a4c0e33ecda89e79a KBBvKB.atbw
03dfac996c8ad3bb0243b6cab20d22db KBBvKN.atbw
fea01a36c7246c01ff7dee676478f69f KBBvKP.atbw
df59dd79ecd5e81667a8d0df9279ad5d KBBvKQ.atbw
69e712795f8131d814fe9c5207d01423 KBBvKR.atbw
3ec95fde73d9142b220c7b599a7bc569 KBNNvK.atbw
@niklasf
niklasf / atomic.md5sums
Last active November 16, 2016 15:29
MD5SUMS of 5 piece atomic syzygy tables
5f09f78f986d440d5fda3cd28b335eb3 KBBBvK.atbw
30405c5366213d43f4acf68b10c5ca58 KBBBvK.atbz
8314a33d3042c8ab76ca365d492c7fd2 KBBNvK.atbw
996aa9ef24cadf6342e15212b8ca91a1 KBBNvK.atbz
2087b9823af4ca34e0f1692b917650e5 KBBPvK.atbw
19b934721c02787d50b471ef44e99bd7 KBBPvK.atbz
0b12a60dcd347e5db4dcb3a19a351b1f KBBvK.atbw
2cdbcd87dbd5a2e069b121d08eb68138 KBBvK.atbz
6d57f8073f620c5a4c0e33ecda89e79a KBBvKB.atbw
a382621f6953995d3948b5f45d5cf7bb KBBvKB.atbz
@niklasf
niklasf / encode-movetimes.py
Last active November 21, 2016 16:51
Benchmarking various methods to encode 100 000 movetimes from FICS
from __future__ import division
from __future__ import print_function
import heapq
import math
import itertools
from collections import defaultdict
#from scipy.special import erf, erfinv
@niklasf
niklasf / cpuid.py
Last active June 22, 2022 09:53
Detect support for popcnt and pext instructions on amd64, x86-64, x86 and i686 CPUs
import ctypes
import contextlib
import os
import platform
def detect_cpu_capabilities():
# Detects support for popcnt and pext instructions
modern, bmi2 = False, False