using DelimitedFiles rotations = readdlm("rotations.csv", ',', Int, '\n') rotations = reshape(rotations, (24, 3, 3)) N = 24 ks = -N÷2:N÷2-1 lattice = hcat((collect.(Iterators.product(ks, ks, ks)))...) labels = reshape(collect(1:N^3), (N, N, N)) for r in 1:24 rotated_lattice = Matrix(rotations[r, :, :]) * lattice for index in 1:N^3 rotated_lattice_point = rotated_lattice[:, index] (i, j, k) = mod1.(rotated_lattice_point .+ (N÷2 + 1), N) old_label = max(labels[index], labels[i, j, k]) new_label = min(labels[index], labels[i, j, k]) if old_label != new_label for o in findall(isequal(old_label), labels) labels[o] = new_label end end end end unique(labels)