Skip to content

Instantly share code, notes, and snippets.

View tkmharris's full-sized avatar
💭
508 Loop Detected

Tom Harris tkmharris

💭
508 Loop Detected
View GitHub Profile
@tkmharris
tkmharris / lock_problem_bfs.rb
Last active January 9, 2023 19:11
Naive solution for owst's combination lock problem using BFS
# frozen_string_literal: true
# Lock Problem
# * We're given a 4-digit combination lock and a known correct unlock code.
# * The allowed moves are to rotate any dial, or any two, three or four
# adjacent dials by one place in either direction.
# * We're looking for an efficient algorithm that returns the least number
# of "moves" required to get to the unlock code. We'd also like the path.
# * e.g.
# - It takes 5 moves to get from [1,2,3,4] to [6,6,6,6].
@tkmharris
tkmharris / bell-numbers.hs
Last active February 17, 2022 22:31
Generate Bell numbers using the Bell triangle
{-- Haskell function for getting the Bell numbers via the Bell triangle --}
{-- Bell number B_n is the number of partitions of {1,...,n} into nonempty subsets.
The Bell triangle A_{i,j}, 0<=j<=i is defined as follows:
1. A_{0,0} = 1
2. A_{i+1,0} = A_{i,i}
3. A_{i+1,j+1} = A_{i+1,j} + A_{i,j}
The Bell numbers can then be read off as B_n = A_{n,0}
@tkmharris
tkmharris / associahedron.py
Last active December 26, 2021 19:41
Gist for generating Loday's integer-coordinate realisation of the the Stasheff polytope (associahedron) https://arxiv.org/abs/math/0212126
"""
Script to generate the (integer) vertices of Loday's realisation
of the n-associahedron in (n-1)-dimensional associahedron
as calculated using planar binary trees in:
https://arxiv.org/abs/math/0212126
(Realisation of the Stasheff Polytope)
Loday construction is as follows:
- each planar binary tree has a canonical "left to right" labelling of its internal nodes
- given a planar binary tree so labelled, Loday prescribes a rule for generating a vector (of integers)
@tkmharris
tkmharris / a345267.py
Last active June 13, 2021 20:46
Code for OEIS sequence A345267
"""
Function to calculate terms of the order of the torsion part of the algebraic K-theory of the integers.
"""
from sympy import bernoulli
def a345267(n):
"""
Calculate the terms of OEIS entry A345267.
(Order of the image of the torsion part of the algebraib K-theory of the integers.).
@tkmharris
tkmharris / a345262.py
Last active June 13, 2021 20:23
Code for OEIS sequence A345262
"""
Function to calculate terms of the order of the image of the J-homomorphism.
"""
from sympy import bernoulli
def a345262(n):
"""
Calculate the terms of OEIS entry A345262.
(Order of the image of the J-homomorphism in the stable homotopy group π_n^S).
@tkmharris
tkmharris / a345225.py
Last active June 11, 2021 23:04
Code for OEIS sequence 345225
"""
Function to calculate terms of OEIS sequence A345225.
"""
def a345225(n):
"""
Calculate OEIS entry A345225(n)
(Orders of 2-primary subgroups of K_n(Z), the algebraic K-theory of the integers.)
n: int, >=0
@tkmharris
tkmharris / a345209.py
Last active June 11, 2021 22:14
Code for OEIS sequence A345209
"""
Function to calculate terms of OEIS sequence A345209.
"""
from sympy import primefactors
def a345209(n):
"""
Calculate OEIS entry A345209(n)
(Number of Petrie polygons on regular triangular map corresponding to the principal congruence subgroup Γ(n) of the mmodular group)
@tkmharris
tkmharris / akiyama-tanigawa-bernoulli.hs
Last active May 26, 2021 20:38
Short Haskell implementation of the Akiyama-Tanigawa algorithm for computing Bernoulli numbers.
{-- Implementation of the Akiyama-Tanigawa algorithm
for computing Bernoulli numbers. --}
{-- Implement the algorithm by:
1. Begin with list of reciprocals of positive integers.
2. Write function to get next row and iteratie it to get list of lists.
3. Take the head of each list in the list to get Bernoulli nums.
Everything evaluates lazily, so we can do this nicely with infinite lists.
See tkmh.space/flotsam/haskell-akiyama-tanigawa for more.--}
@tkmharris
tkmharris / dreidel.py
Last active May 24, 2021 22:53
Simulate a game of Dreidel
# coding: utf8
import random
class OutOfTimeError(Exception):
"""Raised when game passes maximum number of turns"""
pass
class Player:
@tkmharris
tkmharris / partitionTrees.py
Last active May 15, 2021 14:33
Quick implementation of the two trees for partitions discussed here: https://11011110.github.io/blog/2005/08/07/two-trees-on.html
"""
Quick implementation of the two trees for partitions discussed here:
https://11011110.github.io/blog/2005/08/07/two-trees-on.html
"""
from treelib import Node, Tree
# partition class
class InvalidPartitionError(Exception):