- #!/usr/bin/perl
-
-
- use strict;
- use warnings;
-
-
-
- sub factorial {
- my $m = 1;
- $_ = shift;
- $m *= $_-- while $_;
- return $m;
- }
-
-
- sub permute {
- my ($k, @s) = @_;
-
- return @s if $k < 1;
- return 0 if $k > factorial int @s;
-
- for my $j (2..int @s) {
- ($s[$k%$j], $s[$j-1]) = ($s[$j-1], $s[$k%$j]);
- $k = int $k / $j;
- }
-
- return @s;
- }
-
-
- #
- sub is_pandigital {
- my $s = join '', sort @_;
- $s = join '', sort split //, $s;
- return $s eq "123456789" ? 1: 0;
- }
-
-
- my $sum=0;
- my %h;
-
- for my $j (10..10000) {
- for my $k (1..10000/$j+1) {
- $h{$j*$k} = "$j $k" if is_pandigital $j, $k, $j*$k;
- }
- }
-
-
-
- $sum += $_ for keys %h;
-
- print "$_ => $h{$_}\n" for sort keys %h;
-
- print "\n\n$sum\n";