#! perl -slw use strict; use List::Util qw[ sum reduce ]; our $SEED ||=1; srand( $SEED ); my @data = map{ [ map{ int rand 4 } 1 .. 6 ] } 1 .. 20; my @sorted = map { $_->[1] } sort { $b->[0] <=> $a->[0] } map { my $n = reduce{ $a << 2 | $b } 0, @$_; [ $n, $_ ] } @data; print "@$_\tsum:", sum( @$_ ), "\tproduct: ", reduce{ $a *= $b||1 } 1, @$_ for @sorted; __END__ P:\test>503446.pl -SEED=-999998 3 2 2 3 1 1 sum:12 product: 36 3 2 0 1 3 2 sum:11 product: 36 3 1 3 1 3 0 sum:11 product: 27 3 1 3 0 0 2 sum:9 product: 18 3 0 2 2 3 2 sum:12 product: 72 3 0 1 1 0 0 sum:5 product: 3 2 2 1 0 1 2 sum:8 product: 8 2 1 1 0 3 2 sum:9 product: 12 2 1 0 3 1 1 sum:8 product: 6 2 0 3 0 2 2 sum:9 product: 24 2 0 1 1 2 1 sum:7 product: 4 1 3 2 2 2 0 sum:10 product: 24 1 3 0 1 3 1 sum:9 product: 9 1 2 1 1 0 1 sum:6 product: 2 1 1 3 2 3 0 sum:10 product: 18 1 0 2 0 1 1 sum:5 product: 2 0 3 3 0 1 2 sum:9 product: 18 0 2 3 2 0 0 sum:7 product: 12 0 2 3 0 3 1 sum:9 product: 18 0 1 3 0 3 1 sum:8 product: 9 P:\test>503446.pl -SEED=1000 3 3 0 3 0 0 sum:9 product: 27 3 3 0 2 3 3 sum:14 product: 162 3 1 3 1 3 0 sum:11 product: 27 3 1 3 0 0 2 sum:9 product: 18 3 0 2 2 3 2 sum:12 product: 72 3 0 1 1 0 0 sum:5 product: 3 2 2 1 0 1 2 sum:8 product: 8 2 1 1 0 3 2 sum:9 product: 12 2 1 0 3 1 1 sum:8 product: 6 2 0 3 0 2 2 sum:9 product: 24 2 0 1 1 2 1 sum:7 product: 4 1 3 2 2 2 0 sum:10 product: 24 1 3 0 1 3 1 sum:9 product: 9 1 2 1 1 0 1 sum:6 product: 2 1 1 3 2 3 0 sum:10 product: 18 1 0 2 0 1 1 sum:5 product: 2 0 3 3 0 1 2 sum:9 product: 18 0 2 3 2 0 0 sum:7 product: 12 0 2 3 0 3 1 sum:9 product: 18 0 1 3 0 3 1 sum:8 product: 9