diff options
| author | Kian-Meng, Ang <kianmeng@users.noreply.github.com> | 2019-04-07 13:14:44 +0800 |
|---|---|---|
| committer | Kian-Meng, Ang <kianmeng@users.noreply.github.com> | 2019-04-07 13:14:44 +0800 |
| commit | 8a0cdda05376620c2a6d159ae9b32219e726b5ae (patch) | |
| tree | b7d6d1261a7f04f8ac08b34a0ac79cb8edffea52 | |
| parent | 5fbd4f4535ff77c63c68b7437016c4127202791e (diff) | |
| download | perlweeklychallenge-club-8a0cdda05376620c2a6d159ae9b32219e726b5ae.tar.gz perlweeklychallenge-club-8a0cdda05376620c2a6d159ae9b32219e726b5ae.tar.bz2 perlweeklychallenge-club-8a0cdda05376620c2a6d159ae9b32219e726b5ae.zip | |
Challenge 2 answers
| -rw-r--r-- | challenge-001/kian-meng-ang/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-002/kian-meng-ang/perl5/ch-1.sh | 4 | ||||
| -rw-r--r-- | challenge-002/kian-meng-ang/perl5/ch-2.pl | 40 |
3 files changed, 45 insertions, 0 deletions
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 + |
