From 8a0cdda05376620c2a6d159ae9b32219e726b5ae Mon Sep 17 00:00:00 2001 From: "Kian-Meng, Ang" Date: Sun, 7 Apr 2019 13:14:44 +0800 Subject: Challenge 2 answers --- challenge-001/kian-meng-ang/blog.txt | 1 + challenge-002/kian-meng-ang/perl5/ch-1.sh | 4 ++++ challenge-002/kian-meng-ang/perl5/ch-2.pl | 40 +++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 challenge-001/kian-meng-ang/blog.txt create mode 100644 challenge-002/kian-meng-ang/perl5/ch-1.sh create mode 100644 challenge-002/kian-meng-ang/perl5/ch-2.pl diff --git a/challenge-001/kian-meng-ang/blog.txt b/challenge-001/kian-meng-ang/blog.txt new file mode 100644 index 0000000000..27abdc92f6 --- /dev/null +++ b/challenge-001/kian-meng-ang/blog.txt @@ -0,0 +1 @@ +https://www.kianmeng.org/2019/04/perl-weekly-challenge-001-2019-week-13.html diff --git a/challenge-002/kian-meng-ang/perl5/ch-1.sh b/challenge-002/kian-meng-ang/perl5/ch-1.sh new file mode 100644 index 0000000000..f57face3d7 --- /dev/null +++ b/challenge-002/kian-meng-ang/perl5/ch-1.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +perl -E "say int shift" 0001090000 +perl -E "say int shift" "0001090000" diff --git a/challenge-002/kian-meng-ang/perl5/ch-2.pl b/challenge-002/kian-meng-ang/perl5/ch-2.pl new file mode 100644 index 0000000000..716587e4ce --- /dev/null +++ b/challenge-002/kian-meng-ang/perl5/ch-2.pl @@ -0,0 +1,40 @@ +#!/usr/bin/env perl + +use Modern::Perl; +use Test::More; + +sub to_base35 { + my ($num) = @_; + + die if ($num < 0); + + return $num if ($num == 0); + + my @chars = (0..9, 'a'..'y'); + my $base = scalar @chars; + my $result; + while ($num) { + my $remainder = $num % $base; + $num = int($num / $base); + $result .= $chars[$remainder]; + } + return scalar reverse($result); +} + +my %test_numbers = ( + 0 => 0, + 10 => 'a', + 100 => '2u', + 1000 => 'sk', + 10000 => '85p', + 100000 => '2bm5', +); + +while (my ($from, $to) = each (%test_numbers)) { + is(to_base35($from, 35), $to, qq|expect base 10: $from to base 35: $to match|); +} +done_testing; + +1; +# vi:et:sw=4 ts=4 ft=perl + -- cgit