source code for "files/pe/pe_036.pl"
return to portfolio
- #!/usr/bin/perl
- use strict;
- use warnings;
- # base 2
- sub base_2 {
- my $n = shift;
- my $str = '';
- while ($n) {
- $str = $n%2 . $str;
- $n = int $n/2;
- }
- return $str;
- }
- # is_palindrome
- sub is_palindrome {
- my $n = shift;
- return join('', reverse(split //, $n)) eq $n ? 1 : 0;
- }
- # init
- my $sum = 0;
- # work
- for (1..10**6) {
- $sum += $_ if is_palindrome($_) && is_palindrome(base_2 $_);
- }
- print $sum;