- #!/usr/bin/perl
-
- use strict;
- use warnings;
- use POSIX qw/ceil floor/;
-
- sub is_palindrome
- {
- my ($s, $left, $right) = (shift, '', '');
- $left = substr($s, 0, floor length($s)/2);
- $right= reverse substr($s, ceil length($s)/2);
- return $left eq $right;
- }
-
- sub factor
- {
- my ($n, $k, @factors) = (shift, 0, ());
- my ($div, $root) = (0, 0);
-
- $root = int sqrt $n;
-
- for ($k = 100; $k < $root; $k++) {
- if ($n % $k == 0 && length($n/$k) == 3) {
- push(@factors, $k);
- print "$k ... ", $n/$k, "\n";
- }
- }
-
- return @factors;
- }
-
- my ($i, $j, $k, $palindrome);
- my @factors = ();
-
- foreach $i (100..999) {
- foreach $j ($i..999) {
-
-
- }
- }
-
- foreach $i (1..9) {
- foreach $j (0..9) {
- foreach $k (0..9) {
- $palindrome = (10**5+1)*$i + (10**4+10)*$j + 1100*$k;
- @factors = factor($palindrome);
- @factors = grep { length $_ == 3 } @factors;
- last if (length @factors > 1);
-
- }
- }
- }