From d0aa5b1bd184aa478492c1bf6ddecef60651cbd0 Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Wed, 3 Apr 2019 20:36:05 +0100 Subject: - Added solutions by "Nick Logan". --- challenge-002/nick-logan/perl5/ch-1.pl | 1 + challenge-002/nick-logan/perl5/ch-2.pl | 9 +++++++++ challenge-002/nick-logan/perl5/to-base35.pl | 11 +++++++++++ challenge-002/nick-logan/perl6/ch-1.p6 | 1 + challenge-002/nick-logan/perl6/ch-2.p6 | 9 +++++++++ challenge-002/nick-logan/perl6/to-base35.p6 | 11 +++++++++++ 6 files changed, 42 insertions(+) create mode 100644 challenge-002/nick-logan/perl5/ch-1.pl create mode 100644 challenge-002/nick-logan/perl5/ch-2.pl create mode 100644 challenge-002/nick-logan/perl5/to-base35.pl create mode 100644 challenge-002/nick-logan/perl6/ch-1.p6 create mode 100644 challenge-002/nick-logan/perl6/ch-2.p6 create mode 100644 challenge-002/nick-logan/perl6/to-base35.p6 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"); -- cgit