http://qs1969.pair.com?node_id=1186408


in reply to generating permutations

#!/usr/bin/perl -l # http://perlmonks.org/?node_id=1186402 use strict; use warnings; $_ = 12345; 1 while print, s/.*\K # find the last (.) # digit such that (.*) # there is a later (latest) (.)(??{$1 > $3 and 'x'}) # digit greater than it (.*) # and get rest # swap those two digits ( $1 & $3 ) # then reverse everything after the first swapped digit / $3 . reverse $2.$1.$4 /xe