aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2019-04-11 11:05:04 +0100
committerGitHub <noreply@github.com>2019-04-11 11:05:04 +0100
commit51f14ca457b1de6438a2798d83fbe645468f7989 (patch)
tree2f9d435b5ae1ff0da22f564361184ebad83bd261
parent481aefbea598626938020fae30ee74ad91339bda (diff)
parentec34b1f4e29bb6ece971838525231cd81b92cad3 (diff)
downloadperlweeklychallenge-club-51f14ca457b1de6438a2798d83fbe645468f7989.tar.gz
perlweeklychallenge-club-51f14ca457b1de6438a2798d83fbe645468f7989.tar.bz2
perlweeklychallenge-club-51f14ca457b1de6438a2798d83fbe645468f7989.zip
Merge pull request #42 from ugexe/patch-1
Week 3 solution and formatting corrections
-rw-r--r--challenge-001/nick-logan/perl5/ch-1.pl2
-rw-r--r--challenge-001/nick-logan/perl5/ch-2.pl4
-rw-r--r--challenge-001/nick-logan/perl6/ch-1.p62
-rw-r--r--challenge-001/nick-logan/perl6/ch-2.p64
-rw-r--r--challenge-002/nick-logan/perl5/ch-1.pl2
-rw-r--r--challenge-002/nick-logan/perl5/ch-2.pl2
-rw-r--r--challenge-002/nick-logan/perl6/ch-1.p62
-rw-r--r--challenge-002/nick-logan/perl6/ch-2.p62
-rw-r--r--challenge-002/nick-logan/perl6/to-base35.p66
-rw-r--r--challenge-003/nick-logan/perl5/ch-1.pl29
-rw-r--r--challenge-003/nick-logan/perl5/ch-2.pl13
-rw-r--r--challenge-003/nick-logan/perl6/ch-1.p629
-rw-r--r--challenge-003/nick-logan/perl6/ch-2.p613
13 files changed, 104 insertions, 6 deletions
diff --git a/challenge-001/nick-logan/perl5/ch-1.pl b/challenge-001/nick-logan/perl5/ch-1.pl
index c35822d44b..e20ce33987 100644
--- a/challenge-001/nick-logan/perl5/ch-1.pl
+++ b/challenge-001/nick-logan/perl5/ch-1.pl
@@ -1 +1,3 @@
+# WARNING: this polyglot breaks best practices of both Perl 5 and Perl 6 in order to run on both
+
print((($_ eq "e") and uc($_) or $_)) for split("", "Perl Weekly Challenge")
diff --git a/challenge-001/nick-logan/perl5/ch-2.pl b/challenge-001/nick-logan/perl5/ch-2.pl
index cb8a9074af..00372d5c38 100644
--- a/challenge-001/nick-logan/perl5/ch-2.pl
+++ b/challenge-001/nick-logan/perl5/ch-2.pl
@@ -1,3 +1,3 @@
-print((join( "", (!($_ % 3) and "Fizz" or ""), (!($_ % 5) and "Buzz" or "") ) or $_), "\n") for 1..20;
-
+# WARNING: this polyglot breaks best practices of both Perl 5 and Perl 6 in order to run on both
+print((join( "", (!($_ % 3) and "Fizz" or ""), (!($_ % 5) and "Buzz" or "") ) or $_), "\n") for 1..20;
diff --git a/challenge-001/nick-logan/perl6/ch-1.p6 b/challenge-001/nick-logan/perl6/ch-1.p6
index c35822d44b..e20ce33987 100644
--- a/challenge-001/nick-logan/perl6/ch-1.p6
+++ b/challenge-001/nick-logan/perl6/ch-1.p6
@@ -1 +1,3 @@
+# WARNING: this polyglot breaks best practices of both Perl 5 and Perl 6 in order to run on both
+
print((($_ eq "e") and uc($_) or $_)) for split("", "Perl Weekly Challenge")
diff --git a/challenge-001/nick-logan/perl6/ch-2.p6 b/challenge-001/nick-logan/perl6/ch-2.p6
index cb8a9074af..00372d5c38 100644
--- a/challenge-001/nick-logan/perl6/ch-2.p6
+++ b/challenge-001/nick-logan/perl6/ch-2.p6
@@ -1,3 +1,3 @@
-print((join( "", (!($_ % 3) and "Fizz" or ""), (!($_ % 5) and "Buzz" or "") ) or $_), "\n") for 1..20;
-
+# WARNING: this polyglot breaks best practices of both Perl 5 and Perl 6 in order to run on both
+print((join( "", (!($_ % 3) and "Fizz" or ""), (!($_ % 5) and "Buzz" or "") ) or $_), "\n") for 1..20;
diff --git a/challenge-002/nick-logan/perl5/ch-1.pl b/challenge-002/nick-logan/perl5/ch-1.pl
index f7787b8a04..ffbf7bc003 100644
--- a/challenge-002/nick-logan/perl5/ch-1.pl
+++ b/challenge-002/nick-logan/perl5/ch-1.pl
@@ -1 +1,3 @@
+# WARNING: this polyglot breaks best practices of both Perl 5 and Perl 6 in order to run on both
+
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
index f6d6226cda..95628189ed 100644
--- a/challenge-002/nick-logan/perl5/ch-2.pl
+++ b/challenge-002/nick-logan/perl5/ch-2.pl
@@ -1,3 +1,5 @@
+# WARNING: this polyglot breaks best practices of both Perl 5 and Perl 6 in order to run on both
+
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";
diff --git a/challenge-002/nick-logan/perl6/ch-1.p6 b/challenge-002/nick-logan/perl6/ch-1.p6
index f7787b8a04..ffbf7bc003 100644
--- a/challenge-002/nick-logan/perl6/ch-1.p6
+++ b/challenge-002/nick-logan/perl6/ch-1.p6
@@ -1 +1,3 @@
+# WARNING: this polyglot breaks best practices of both Perl 5 and Perl 6 in order to run on both
+
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
index f6d6226cda..95628189ed 100644
--- a/challenge-002/nick-logan/perl6/ch-2.p6
+++ b/challenge-002/nick-logan/perl6/ch-2.p6
@@ -1,3 +1,5 @@
+# WARNING: this polyglot breaks best practices of both Perl 5 and Perl 6 in order to run on both
+
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";
diff --git a/challenge-002/nick-logan/perl6/to-base35.p6 b/challenge-002/nick-logan/perl6/to-base35.p6
index 683acda914..e4f7e98a95 100644
--- a/challenge-002/nick-logan/perl6/to-base35.p6
+++ b/challenge-002/nick-logan/perl6/to-base35.p6
@@ -1,3 +1,5 @@
+# WARNING: this polyglot breaks best practices of both Perl 5 and Perl 6 in order to run on both
+
# 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|) ) };
@@ -5,7 +7,7 @@ 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);
+ $result = join("", $dict{to_int($base10 % 35)}, $result);
+ $base10 = to_int($base10 / 35);
}
print("$result\n");
diff --git a/challenge-003/nick-logan/perl5/ch-1.pl b/challenge-003/nick-logan/perl5/ch-1.pl
new file mode 100644
index 0000000000..b76f7d6d92
--- /dev/null
+++ b/challenge-003/nick-logan/perl5/ch-1.pl
@@ -0,0 +1,29 @@
+# WARNING: this polyglot breaks best practices of both Perl 5 and Perl 6 in order to run on both
+
+my @ARGV = do { sub eval { &EVAL(@_) }; eval( ("0" and q|@*ARGS| or q|@ARGV|) ) };
+
+my $numbers_tried = 0;
+my $numbers_found = 0;
+
+NUMBERS: while ($numbers_found != @ARGV[0]) {
+
+ $numbers_tried++;
+ my $state = $numbers_tried;
+ while ($state != 1) {
+ if ($state % 2 == 0) {
+ $state /= 2;
+ }
+ elsif ($state % 3 == 0) {
+ $state /= 3;
+ }
+ elsif ($state % 5 == 0) {
+ $state /= 5;
+ }
+ else {
+ next NUMBERS;
+ }
+ }
+ $numbers_found++;
+
+ print("$numbers_tried\n");
+}
diff --git a/challenge-003/nick-logan/perl5/ch-2.pl b/challenge-003/nick-logan/perl5/ch-2.pl
new file mode 100644
index 0000000000..10bcd74535
--- /dev/null
+++ b/challenge-003/nick-logan/perl5/ch-2.pl
@@ -0,0 +1,13 @@
+# WARNING: this polyglot breaks best practices of both Perl 5 and Perl 6 in order to run on both
+
+my @ARGV = do { sub eval { &EVAL(@_) }; eval( ("0" and q|@*ARGS| or q|@ARGV|) ) };
+
+my @state = (1,);
+for (1 .. @ARGV[0]) {
+ print(join(" ", @state), "\n");
+ my @row = map &{ sub ($_) { @state[$_] + (@state[$_ + 1] // 0) } }.(), (0 .. ($_ - 2));
+ @state = ();
+ push(@state, 1);
+ push(@state, $_) for @row;
+ push(@state, 1);
+}
diff --git a/challenge-003/nick-logan/perl6/ch-1.p6 b/challenge-003/nick-logan/perl6/ch-1.p6
new file mode 100644
index 0000000000..b76f7d6d92
--- /dev/null
+++ b/challenge-003/nick-logan/perl6/ch-1.p6
@@ -0,0 +1,29 @@
+# WARNING: this polyglot breaks best practices of both Perl 5 and Perl 6 in order to run on both
+
+my @ARGV = do { sub eval { &EVAL(@_) }; eval( ("0" and q|@*ARGS| or q|@ARGV|) ) };
+
+my $numbers_tried = 0;
+my $numbers_found = 0;
+
+NUMBERS: while ($numbers_found != @ARGV[0]) {
+
+ $numbers_tried++;
+ my $state = $numbers_tried;
+ while ($state != 1) {
+ if ($state % 2 == 0) {
+ $state /= 2;
+ }
+ elsif ($state % 3 == 0) {
+ $state /= 3;
+ }
+ elsif ($state % 5 == 0) {
+ $state /= 5;
+ }
+ else {
+ next NUMBERS;
+ }
+ }
+ $numbers_found++;
+
+ print("$numbers_tried\n");
+}
diff --git a/challenge-003/nick-logan/perl6/ch-2.p6 b/challenge-003/nick-logan/perl6/ch-2.p6
new file mode 100644
index 0000000000..10bcd74535
--- /dev/null
+++ b/challenge-003/nick-logan/perl6/ch-2.p6
@@ -0,0 +1,13 @@
+# WARNING: this polyglot breaks best practices of both Perl 5 and Perl 6 in order to run on both
+
+my @ARGV = do { sub eval { &EVAL(@_) }; eval( ("0" and q|@*ARGS| or q|@ARGV|) ) };
+
+my @state = (1,);
+for (1 .. @ARGV[0]) {
+ print(join(" ", @state), "\n");
+ my @row = map &{ sub ($_) { @state[$_] + (@state[$_ + 1] // 0) } }.(), (0 .. ($_ - 2));
+ @state = ();
+ push(@state, 1);
+ push(@state, $_) for @row;
+ push(@state, 1);
+}