The stupid question is the question not asked PerlMonks

### Re: list of four digit lock combinations without repeated digits

by johngg (Canon)
 on Jun 22, 2018 at 16:22 UTC ( #1217223=note: print w/replies, xml ) Need Help??

Here are a couple of nested loop solutions that are probably what the *::Combinatorics modules do under the hood.

```johngg@abouriou ~/perl/Monks \$ perl -Mstrict -Mwarnings -E '
for my \$w ( 0 .. 6 )
{
for my \$x ( \$w + 1 .. 7 )
{
for my \$y ( \$x + 1 .. 8 )
{
for my \$z ( \$y + 1 .. 9 )
{
say join q{}, \$w, \$x, \$y, \$z;
}
}
}
}' | wc -l
210
```johngg@abouriou ~/perl/Monks \$ perl -Mstrict -Mwarnings -E '
say for
map {
my \$w = \$_;
my \$x = \$w + 1;
map {
my \$y = \$_ + 1;
map {
my \$z = \$_ + 1;
map {
join q{}, \$w, \$x, \$y, \$z
} \$z .. 9
} \$y .. 8
} \$x .. 7
} 0 .. 6;' | wc -l
210

Done just for fun, the modules are probably the best way to go.

Update: Ignore the map version as it is giving incorrect results, right number but wrong digits.

Update 2: Spotted my error in the map version, I was initialising the three inner variables too early. This works:-

```johngg@abouriou ~/perl/Monks \$ perl -Mstrict -Mwarnings -E '
say for
map {
my \$w = \$_;
map {
my \$x = \$_;
map {
my \$y = \$_;
map {
my \$z = \$_;
join q{}, \$w, \$x, \$y, \$z;
} ( \$y + 1 ) .. 9
} ( \$x + 1 ) .. 8
} ( \$w + 1 ) .. 7
} 0 .. 6;' | wc -l
210

Cheers,

JohnGG

Create A New User
Node Status?
node history
Node Type: note [id://1217223]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (6)
As of 2019-05-27 09:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Do you enjoy 3D movies?

Results (155 votes). Check out past polls.

Notices?