diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2019-04-11 11:05:04 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-04-11 11:05:04 +0100 |
| commit | 51f14ca457b1de6438a2798d83fbe645468f7989 (patch) | |
| tree | 2f9d435b5ae1ff0da22f564361184ebad83bd261 | |
| parent | 481aefbea598626938020fae30ee74ad91339bda (diff) | |
| parent | ec34b1f4e29bb6ece971838525231cd81b92cad3 (diff) | |
| download | perlweeklychallenge-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.pl | 2 | ||||
| -rw-r--r-- | challenge-001/nick-logan/perl5/ch-2.pl | 4 | ||||
| -rw-r--r-- | challenge-001/nick-logan/perl6/ch-1.p6 | 2 | ||||
| -rw-r--r-- | challenge-001/nick-logan/perl6/ch-2.p6 | 4 | ||||
| -rw-r--r-- | challenge-002/nick-logan/perl5/ch-1.pl | 2 | ||||
| -rw-r--r-- | challenge-002/nick-logan/perl5/ch-2.pl | 2 | ||||
| -rw-r--r-- | challenge-002/nick-logan/perl6/ch-1.p6 | 2 | ||||
| -rw-r--r-- | challenge-002/nick-logan/perl6/ch-2.p6 | 2 | ||||
| -rw-r--r-- | challenge-002/nick-logan/perl6/to-base35.p6 | 6 | ||||
| -rw-r--r-- | challenge-003/nick-logan/perl5/ch-1.pl | 29 | ||||
| -rw-r--r-- | challenge-003/nick-logan/perl5/ch-2.pl | 13 | ||||
| -rw-r--r-- | challenge-003/nick-logan/perl6/ch-1.p6 | 29 | ||||
| -rw-r--r-- | challenge-003/nick-logan/perl6/ch-2.p6 | 13 |
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); +} |
