in reply to
swap columns in a 2-dim array
I know you're using the term "swapping" in the original post, but if the main criterium is simply that in the end not a single column is where it originally was, wouldn't a really simply approach be to move all the columns 1 to the right, where the last one folds back to become the first one? This would also account for uneven numbers of columns. If you want to make thing more interesting an option would be to create a fresh AoA, where every element is placed in column (X + amount of columns) to the right where (X + amount of columns to the right) needs to be checked against (total number of columns) and should it be greater than be reduced by (total number of columns).