First, the programmer has to tell the solver to pack a 6×6 square with 5 I and 7 L trominoes. This can start unrestricted, depending how easy it is to add search parameters, although locking three I’s horizontal and two vertical will save later work.

The next restriction is to look only for solutions with a balanced three-coloring. Since my answer has two D pieces touching at a corner, you may choose to focus on *strict* three-colorings. And this means there is no way to “wall off” any section of the packing, so the coloring is always unique up to… uh, palette swaps. (I don’t know the math term for it.)

Last, you must check (either directly or through the solver) whether the colorings correspond to the three sets. Part of this is checking that no two pieces of the same shape and color are oriented identically. If that checks out, the color with a single I is the oriented-diagonal set. There’s no need to check each candidate orientation for any set; for instance, the “missing” L-tromino in the oriented-diagonal set is symmetric under one diagonal, but the different orientations of the other three is enough to show the other diagonal works.

The different orientations of the two I’s and two L’s in each of the two remaining sets allows either to be oriented-parallel to some axis. So all that’s left is to check that one of the sets *can* be polar-one-sided. That only requires either set’s two L’s to be a quarter-turn apart and not a half-turn.

D: Oriented parallel

L: Oriented diagonal

S: Polar one-sided

DSSLLD DDSDLD SLDDSD SLLSSL SDDDLL LLLSSS]]>