This is a search program for edge lengths of hybrid Archimedean tilings of the hyperbolic plane. The algorithm, in which vertex configurations are checked in ascending order of edge length, was conceived by Marek, who is active on the HyperRogue Discord. I have translated it into Rust for better performance.
On the Euclidean plane, we can make tessellations by putting 6 regular triangles around each vertex, or by putting 4 squares around each vertex, or 3 regular hexagons. If we put even more regular polygons around a vertex, this may form a tiling of the hyperbolic plane. The hyperbolic plane has constant negative curvature. For a specific configuration of regular polygons to tile the hyperbolic plane, the polygons' edge length must take on a specific value.
For a tiling with
The interior angles
Now consider some other tiling of the hyperbolic plane, where we fit
We allow for
In this program, given a vertex configuration
For convenience, we define