#
# This software is Copyright 2005 by Elsevier Inc.  You may use it
# under the terms of the license at http://perl.plover.com/hop/LICENSE.txt .
#



###
### permute-n
###

## Chapter 4 section 3.1

sub n_to_pat {
  my @odometer;
  my ($n, $length) = @_;
  for my $i (1 .. $length) {
    unshift @odometer, $n % $i;
    $n = int($n/$i);
  }
  return $n ? () : @odometer;
}
sub permute {
  my @items = @_;
  my $n = 0;
  return Iterator {
    my @pattern = n_to_pat($n, scalar(@items));
    my @result = pattern_to_permutation(\@pattern, \@items);
    $n++;
    return @result;
  };
}
