An algorithm for generating permutations | Communications of the ACM | DeepDyve