aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKian-Meng, Ang <kianmeng@users.noreply.github.com>2019-04-07 13:14:44 +0800
committerKian-Meng, Ang <kianmeng@users.noreply.github.com>2019-04-07 13:14:44 +0800
commit8a0cdda05376620c2a6d159ae9b32219e726b5ae (patch)
treeb7d6d1261a7f04f8ac08b34a0ac79cb8edffea52
parent5fbd4f4535ff77c63c68b7437016c4127202791e (diff)
downloadperlweeklychallenge-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.txt1
-rw-r--r--challenge-002/kian-meng-ang/perl5/ch-1.sh4
-rw-r--r--challenge-002/kian-meng-ang/perl5/ch-2.pl40
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
+