in reply to Re: Find duplicate digits
in thread Find duplicate digits
This version directly generates the list of desired patterns rather than filtering through all 4-digit patterns, just to demonstrate another approach. It also works for any length of digit string.
#/usr/bin/perl -w use strict; use Algorithm::Loops qw< NestedLoops NextPermute >; my( $uniq )= ( @ARGV, 3 ); # 3 unique digits plus one duplicate digit my $digs= NestedLoops( [ [0..9], ( sub { [1+$_..9] } ) x ($uniq-1) ], ); my @digs; while( @digs= $digs->() ) { do { for my $dup ( 0 .. $#digs ) { for my $after ( $dup .. $#digs ) { my @result= @digs; splice @result, 1+$after, 0, $digs[$dup]; print @result, $/; } } } while( NextPermute( @digs ) ); }
- tye
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Find duplicate digits (non-filter)
by mroman (Initiate) on Apr 08, 2010 at 09:13 UTC |