-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProb36.pl
More file actions
63 lines (62 loc) · 1.03 KB
/
Prob36.pl
File metadata and controls
63 lines (62 loc) · 1.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#! usr/bin/perl
#Matthew Digman
use strict;
use warnings;
use bigint;
my @palindromic;
sub are_equal{
my $a1=shift;
my $a2=shift;
my @array1=@{$a1};
my @array2=@{$a2};
for(0..$#array1){
unless($array1[$_]==$array2[$_]){
return 0;
}
}
return 1;
}
for(1..600000){
my @nums=split '', $_;
my @revers=reverse @nums;
if(are_equal(\@nums,\@revers)){
my @base2;
my $start=1;
my $index=0;
$start*=2 while($start<$_);
if($start!=$_){
$start/=2;
}
my $num=$_;
while($start>=1){
my $digit=$_/$start;
if($digit<1){
$digit=0;
}elsif($digit>=2){
$digit=0;
}else{
$digit=1;
}
$base2[$index]=$digit;
$_-=$start if($_>=$start);
$start/=2;
$index++;
}
@revers=reverse @base2;
if(are_equal(\@revers,\@base2)){
print "$num to @revers in base 2\n";
push @palindromic,$num;
}
}
}
sub sum{
my $sum;
for(@_){
$sum+=$_;
}
$sum;
}
print "@palindromic\n";
print "$#palindromic+1\n";
my $sum=sum @palindromic;
print "$sum\n";