Generate binary matrices which are distinct up to reflections
Jelly, 19 bytes
Ṛ€;U;
2ḶṗṗµWdz¡Ṃµ€Q
Try it online!
How it works
2ḶṗṗµWdz¡Ṃµ€Q Main link. Argument: n (integer)
2Ḷ Unlength 2; yield [0, 1].
ṗ Cartesian product; construct all vectors of {0, 1}^n.
ṗ Cartesian product; construct all vectors of ({0, 1}^n)^n.
This yields A, the array of all binary n×n matrices.
µ µ€ Begin a new, monadic chain and apply it to all matrices M in A.
W Wrap; yield [M].
dz¡ Call the helper link n times, initially with argument [M], then
on the previous return value.
Ṃ Take the minimum of the results.
This replaces all matrices with the lexicographical minimum of their
equivalence classes, mapping equivalent matrices to the same matrix.
Q Unique; deduplicate the resulting array of matrices.
Ṛ€;U; Helper link. Argument: L (array of matrices)
Ṛ€ Reverse the order of the rows of each M in L.
U Reverse the order of the columns of each M in L.
; Concatenate the resulting matrix arrays.
; Concatenate the result with L.
Pyth - 24 23 21 bytes
Wanna look for better way of getting all the reflections.
Thanks to @Pietu1998 for golfing me 2 bytes!
hM.gS+K_Bk_MMKcRQ^`T*
Try it online here.
Going to wait for golfing before doing a full explanation, but it essentially makes all possible binary matrices, then .g
roups them by the sorted list of all the possible reflections, then only takes one from each group.