aboutsummaryrefslogtreecommitdiff
path: root/challenge-002
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2019-04-03 20:36:05 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2019-04-03 20:36:05 +0100
commitd0aa5b1bd184aa478492c1bf6ddecef60651cbd0 (patch)
tree021ef421eb0bd39edeb028554f7ed33917731800 /challenge-002
parent75fea8807c48d41773400f695cf9dfa39910769f (diff)
downloadperlweeklychallenge-club-d0aa5b1bd184aa478492c1bf6ddecef60651cbd0.tar.gz
perlweeklychallenge-club-d0aa5b1bd184aa478492c1bf6ddecef60651cbd0.tar.bz2
perlweeklychallenge-club-d0aa5b1bd184aa478492c1bf6ddecef60651cbd0.zip
- Added solutions by "Nick Logan".
Diffstat (limited to 'challenge-002')
-rw-r--r--challenge-002/nick-logan/perl5/ch-1.pl1
-rw-r--r--challenge-002/nick-logan/perl5/ch-2.pl9
-rw-r--r--challenge-002/nick-logan/perl5/to-base35.pl11
-rw-r--r--challenge-002/nick-logan/perl6/ch-1.p61
-rw-r--r--challenge-002/nick-logan/perl6/ch-2.p69
-rw-r--r--challenge-002/nick-logan/perl6/to-base35.p611
6 files changed, 42 insertions, 0 deletions
diff --git a/challenge-002/nick-logan/perl5/ch-1.pl b/challenge-002/nick-logan/perl5/ch-1.pl
new file mode 100644
index 0000000000..f7787b8a04
--- /dev/null
+++ b/challenge-002/nick-logan/perl5/ch-1.pl
@@ -0,0 +1 @@
+my @ARGV = do { sub eval($_) { &EVAL($_) }; eval( ("0" and q|@*ARGS| or q|@ARGV|) ) }; print("$_\n") for map &{ sub ($_) { /^0(0|1|2|3|4|5|6|7|8|9)+/ and (0+$_) or $_ } }.(), @ARGV;
diff --git a/challenge-002/nick-logan/perl5/ch-2.pl b/challenge-002/nick-logan/perl5/ch-2.pl
new file mode 100644
index 0000000000..f6d6226cda
--- /dev/null
+++ b/challenge-002/nick-logan/perl5/ch-2.pl
@@ -0,0 +1,9 @@
+my @ARGV = do { sub eval { chomp &EVAL(@_) }; eval( ("0" and q|@*ARGS| or q|@ARGV|) ) };
+my ($state, $result, $dict, $base35) = (1, "", {}, @ARGV[0]);
+$dict{$_} = $_ for "1".."9";
+$dict{$_} = ord($_) - 55 for "A".."Y";
+for (reverse grep &{ sub ($_) { $_ ne "" } }.(), split("", $base35)) {
+ $result += $state * $dict{$_};
+ $state *= 35;
+};
+print("$result\n");
diff --git a/challenge-002/nick-logan/perl5/to-base35.pl b/challenge-002/nick-logan/perl5/to-base35.pl
new file mode 100644
index 0000000000..683acda914
--- /dev/null
+++ b/challenge-002/nick-logan/perl5/to-base35.pl
@@ -0,0 +1,11 @@
+# bin/to-base35
+sub to_int($_) { my @i = split(/"."/, $_[0]); @i[0] };
+my @ARGV = do { sub eval { chomp &EVAL(@_) }; eval( ("0" and q|@*ARGS| or q|@ARGV|) ) };
+my ($result, $dict, $base10) = ("", {}, @ARGV[0]);
+$dict{$_} = $_ for "1".."9";
+$dict{ord($_) - 55} = $_ for "A".."Y";
+while ($base10 > 0) {
+ $result = join("", $dict{to_int($base10 % 35)}, $result);
+ $base10 = to_int($base10 / 35);
+}
+print("$result\n");
diff --git a/challenge-002/nick-logan/perl6/ch-1.p6 b/challenge-002/nick-logan/perl6/ch-1.p6
new file mode 100644
index 0000000000..f7787b8a04
--- /dev/null
+++ b/challenge-002/nick-logan/perl6/ch-1.p6
@@ -0,0 +1 @@
+my @ARGV = do { sub eval($_) { &EVAL($_) }; eval( ("0" and q|@*ARGS| or q|@ARGV|) ) }; print("$_\n") for map &{ sub ($_) { /^0(0|1|2|3|4|5|6|7|8|9)+/ and (0+$_) or $_ } }.(), @ARGV;
diff --git a/challenge-002/nick-logan/perl6/ch-2.p6 b/challenge-002/nick-logan/perl6/ch-2.p6
new file mode 100644
index 0000000000..f6d6226cda
--- /dev/null
+++ b/challenge-002/nick-logan/perl6/ch-2.p6
@@ -0,0 +1,9 @@
+my @ARGV = do { sub eval { chomp &EVAL(@_) }; eval( ("0" and q|@*ARGS| or q|@ARGV|) ) };
+my ($state, $result, $dict, $base35) = (1, "", {}, @ARGV[0]);
+$dict{$_} = $_ for "1".."9";
+$dict{$_} = ord($_) - 55 for "A".."Y";
+for (reverse grep &{ sub ($_) { $_ ne "" } }.(), split("", $base35)) {
+ $result += $state * $dict{$_};
+ $state *= 35;
+};
+print("$result\n");
diff --git a/challenge-002/nick-logan/perl6/to-base35.p6 b/challenge-002/nick-logan/perl6/to-base35.p6
new file mode 100644
index 0000000000..683acda914
--- /dev/null
+++ b/challenge-002/nick-logan/perl6/to-base35.p6
@@ -0,0 +1,11 @@
+# bin/to-base35
+sub to_int($_) { my @i = split(/"."/, $_[0]); @i[0] };
+my @ARGV = do { sub eval { chomp &EVAL(@_) }; eval( ("0" and q|@*ARGS| or q|@ARGV|) ) };
+my ($result, $dict, $base10) = ("", {}, @ARGV[0]);
+$dict{$_} = $_ for "1".."9";
+$dict{ord($_) - 55} = $_ for "A".."Y";
+while ($base10 > 0) {
+ $result = join("", $dict{to_int($base10 % 35)}, $result);
+ $base10 = to_int($base10 / 35);
+}
+print("$result\n");