aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-01-30 17:50:59 +0000
committerGitHub <noreply@github.com>2022-01-30 17:50:59 +0000
commitdf94b8a04e40fd0481f13e7f4316a6abe06a16dc (patch)
tree744b87ae61d877d1685ddba80044585fc69ec75a
parent44d69019f5fddc80aa432b06d3fa518c2b1ba802 (diff)
parent850134ebe13ce2aedc5b0bef924bd0660a27047a (diff)
downloadperlweeklychallenge-club-df94b8a04e40fd0481f13e7f4316a6abe06a16dc.tar.gz
perlweeklychallenge-club-df94b8a04e40fd0481f13e7f4316a6abe06a16dc.tar.bz2
perlweeklychallenge-club-df94b8a04e40fd0481f13e7f4316a6abe06a16dc.zip
Merge pull request #5585 from choroba/ech149b
Fix 149/2 by switching to Math::Base::Convert
-rwxr-xr-xchallenge-149/e-choroba/perl/ch-2.pl16
1 files changed, 7 insertions, 9 deletions
diff --git a/challenge-149/e-choroba/perl/ch-2.pl b/challenge-149/e-choroba/perl/ch-2.pl
index 06a9eb3d62..8ad966193c 100755
--- a/challenge-149/e-choroba/perl/ch-2.pl
+++ b/challenge-149/e-choroba/perl/ch-2.pl
@@ -2,21 +2,19 @@
use warnings;
use strict;
-use Math::Int2Base qw{ int2base base2int };
+use Math::Base::Convert qw{ cnv };
+my @digits36 = (0 .. 9, 'A' .. 'Z');
sub largest_square {
my ($base) = @_;
die "Base can't be more than 36.\n" if $base > 36;
- my $start = join "", map int2base($_, 36), reverse 0 .. $base - 1;
- my $n = int sqrt base2int($start, $base);
- if ($n =~ /E/) {
- use bigint;
- $n = int sqrt base2int($start, $base);
- }
+ my $chars = [@digits36[0 .. $base - 1]];
+ my $start = join "", reverse @$chars;
+ my $n = int sqrt cnv($start, $chars, 10);
while ($n) {
- my $square = int2base($n * $n, $base);
+ my $square = cnv($n * $n, 10, $chars);
--$n, next if $square =~ /(.).*\1/;
@@ -30,4 +28,4 @@ is largest_square(2), '1';
is largest_square(4), '3201';
is largest_square(10), '9814072356';
is largest_square(12), 'B8750A649321';
-is largest_square(16), 'FEB6795D4C32A801';
+is largest_square(16), 'FED5B39A42706C81';