TITLE: Finding all 15-ominoes that tile the plane and have distinct internal adjacencies
QUESTION [12 upvotes]: Problem Description:

This problem oddly came up in Minecraft with some friends. Not sure what the best terms are; but that's partly why I'm here.
So a polyomino is built up from squares. This problem is to find 15-ominoes (pentdecominoes?) that tile the plane where each square inside has a distinct "adjacency fingerprint" so to speak; meaning that no two squares look the same when zoomed in on based on their directly adjacent neighbors.
More formally, you give every square in the polyomino one of sixteen signatures $\sigma\in \{ 0,1\}^4 $ based on whether or not it's connected to another square in the same polyomino in the north/south/east/west direction (or +y/-y/+x/-x direction equivalently). The constraint is that no two squares in the polyomino have the same signature. Pictures of solutions might help to clarify what I'm trying to say.

Solutions so far:

Here's a couple we found already:
two solutions image / minecraft screenshot
We also found a few disconnected shapes with these properties (so 15 or 16 squares with distinct adjacencies forming a rigid-but-disconnected shape that can tile the plane):
three disconnected tile solutions / minecraft screenshot
The 2nd images shows the relationship to Minecraft a bit. Two fence blocks placed next to each other in Minecraft will link. Thus any fence block in the game can take on 16 possible different shapes depending on whether it has a connection to the north/south/east/west. We're looking for fence linkages having all 15 connecting shapes (or all 16 if disconnected solutions are allowed since the 16th shape is just a totally unconnected fence post).

Our attempts:

We've tried a lot to solve this from adjacency matrices to programs that brute-force generate every possible 15-omino with this square-adjacency-constraint. Brute-forcing doesn't even work even with our clever search-space-pruning tricks. My next thought was to look up lattices and 2d tilings and just learn what constraints a tiling 15-square shape has to obey. My hope was that tiling constraints paired with the adjacency constraints would be enough to fully enumerate all solutions. But when I started researching lattices and tesselations, I was quickly overwhelmed and wasn't sure even what terms to look for.
We've also figured out, based on the adjacencies, that any such solution must be at least 3 blocks wide (4 wide if it's a single connected polyomino) and no more than 7 wide in either dimension.
Lastly, with our brute-forcing program, we managed to generate all 15-ominoes (and some disconnected shapes) composed of distinct-adjacency-signature squares which fit in a 5x5 area: 40ish linkages of 15 distinct fence-shapes that fit in a 5x5 area

REPLY [4 votes]: Any such 15-omino can have its four cells with a single adjacency removed to yield an $11$-omino. This $11$-omino will have at most $4$ cases of duplicate adjacency types. As we add these leaf nodes one at a time, we get $12$-ominoes with at most $3$ duplicate adjacency types, $13$-ominoes with at most $2$ duplicates, and $14$-ominoes with at most one.
Starting with all $11$-ominoes, and only keeping the extensions with the above properties at each stage, keeps the size of the set manageable.
We prune our $17073$ $11$-ominoes to a set of $15882$, which produces $62064$ extensions to $12$-ominoes (of which $36227$ have $3$ or fewer duplicates).
These $36227$ can be extended to $183492$ possible $13$-ominoes, of which $30533$ have $2$ or fewer duplicates.
These extend to $261785$ possible $14$-ominoes, of which $5773$ have at most $1$ duplicate.
These extend to $84474$ possible $15$-ominoes, from which we obtain $604$ final candidates.
Of these, $97$ have a $1\times 1$ internal hole, and can be ruled out.
Figuring out whether each of the remaining $507$ tile the plane should be pretty possible with good checks for e.g. the Conway criterion and some simple failures to e.g. cover an $8\times 8$ square. Unfortunately I don't have code that does this very efficiently, but I've put the $507$ candidates in a text file here, in a way that should be easy both for humans to view and for programs to parse if anyone else wants to take a shot at pruning this list.
$14$ of the candidates can tile via only translation, which is an easy case to check programmatically; I've included photos of those tilings here. (The examples in the original post are the $13^\textrm{th}$ and $4^\textrm{th}$ in this album, respectively.)
Edit: Writing a little more code, there are an additional $35$ of the tiles for which gluing two copies together produces a shape that tiles by translation. These are listed in a text file here, with each polyomino followed by the corresponding union of two copies.
{"set_name": "stack_exchange", "score": 12, "question_id": 4503399}