aboutsummaryrefslogtreecommitdiff
path: root/challenge-034
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2019-11-17 19:01:29 -0500
committerJaldhar H. Vyas <jaldhar@braincells.com>2019-11-17 19:01:29 -0500
commit57a8f45d4ffab36063e210bcf7e98e7bb5d0c228 (patch)
tree210cbc5eef61118c49fe8f4c7eb0302d70031f51 /challenge-034
parent1cb9654dd6e3a40a12c031c3d9b7f9e610f30d70 (diff)
downloadperlweeklychallenge-club-57a8f45d4ffab36063e210bcf7e98e7bb5d0c228.tar.gz
perlweeklychallenge-club-57a8f45d4ffab36063e210bcf7e98e7bb5d0c228.tar.bz2
perlweeklychallenge-club-57a8f45d4ffab36063e210bcf7e98e7bb5d0c228.zip
Challenge 34 by Jaldhar H. Vyas (missing one.)
Diffstat (limited to 'challenge-034')
-rw-r--r--challenge-034/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-034/jaldhar-h-vyas/perl5/ch-2.pl82
-rwxr-xr-xchallenge-034/jaldhar-h-vyas/perl6/ch-1.p628
-rwxr-xr-xchallenge-034/jaldhar-h-vyas/perl6/ch-2.p675
4 files changed, 186 insertions, 0 deletions
diff --git a/challenge-034/jaldhar-h-vyas/blog.txt b/challenge-034/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..912204fd78
--- /dev/null
+++ b/challenge-034/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2019/11/perl_weekly_challenge_week_34.html
diff --git a/challenge-034/jaldhar-h-vyas/perl5/ch-2.pl b/challenge-034/jaldhar-h-vyas/perl5/ch-2.pl
new file mode 100755
index 0000000000..17932bcc06
--- /dev/null
+++ b/challenge-034/jaldhar-h-vyas/perl5/ch-2.pl
@@ -0,0 +1,82 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use 5.010;
+
+my @choices = ( \&chose_paper, \&chose_scissors, \&chose_rock );
+
+my @outcomes = (
+ [ \&draw, \&scissors_loss, \&paper_win, ],
+ [ \&scissors_win, \&draw, \&rock_loss, ],
+ [ \&paper_loss, \&rock_win, \&draw, ]
+);
+
+my @winners = ( \&winner_A, \&winner_B );
+
+sub chose_paper {
+ my ($chooser) = @_;
+
+ say "$chooser chose Paper.";
+}
+
+sub chose_scissors {
+ my ($chooser) = @_;
+
+ say "$chooser chose Scissors.";
+}
+
+sub chose_rock {
+ my ($chooser) = @_;
+
+ say "$chooser chose Rock.";
+}
+
+sub paper_win {
+ say "Paper covers Rock. ";
+ &{$winners[0]};
+}
+
+sub paper_loss {
+ say "Paper covers Rock. ";
+ &{$winners[1]};
+}
+
+sub scissors_win {
+ say "Scissors cuts Paper. ";
+ &{$winners[0]};
+}
+
+sub scissors_loss {
+ say "Scissors cuts Paper. ";
+ &{$winners[1]};
+}
+
+sub rock_win {
+ say "Rock smashes Scissors. ";
+ &{$winners[0]};
+}
+
+sub rock_loss {
+ say "Rock smashes Scissors. ";
+ &{$winners[1]};
+}
+
+sub draw {
+ say "It's a draw.";
+}
+
+sub winner_A {
+ say "A wins.";
+}
+
+sub winner_B {
+ say "B wins.";
+}
+
+my $achoice = int rand 3;
+my $bchoice = int rand 3;
+
+$choices[$achoice]('A');
+$choices[$bchoice]('B');
+
+$outcomes[$achoice][$bchoice]();
diff --git a/challenge-034/jaldhar-h-vyas/perl6/ch-1.p6 b/challenge-034/jaldhar-h-vyas/perl6/ch-1.p6
new file mode 100755
index 0000000000..4fcffc8b99
--- /dev/null
+++ b/challenge-034/jaldhar-h-vyas/perl6/ch-1.p6
@@ -0,0 +1,28 @@
+#!/usr/bin/perl6
+
+sub binarySearch(@haystack, $needle) {
+ if @haystack.elems {
+ my $mid = (@haystack.elems / 2).Int;
+
+ if $needle eq @haystack[$mid] {
+ return True;
+ }
+
+ if $needle gt @haystack[$mid] {
+ return binarySearch(@haystack[$mid + 1 .. *], $needle);
+ }
+
+ return binarySearch(@haystack[0 .. $mid - 1], $needle);
+ }
+ return False;
+}
+
+sub MAIN() {
+ my @letters = ('a' .. 'z');
+ my @haystack = @letters.pick(@letters.elems / 2);
+ my $needle = @letters.pick;
+
+ say "is $needle in ", @haystack.join, '?';
+ say binarySearch(@haystack.sort, $needle) ?? 'Yes.' !! 'No.';
+}
+
diff --git a/challenge-034/jaldhar-h-vyas/perl6/ch-2.p6 b/challenge-034/jaldhar-h-vyas/perl6/ch-2.p6
new file mode 100755
index 0000000000..080411d19b
--- /dev/null
+++ b/challenge-034/jaldhar-h-vyas/perl6/ch-2.p6
@@ -0,0 +1,75 @@
+#!/usr/bin/perl6
+
+my @choices = ( &chose_paper, &chose_scissors, &chose_rock );
+
+my @outcomes = (
+ ( &draw, &scissors_loss, &paper_win, ),
+ ( &scissors_win, &draw, &rock_loss, ),
+ ( &paper_loss, &rock_win, &draw, )
+);
+
+my @winners = ( &winner_A, &winner_B );
+
+sub chose_paper($chooser) {
+ say "$chooser chose Paper.";
+}
+
+sub chose_scissors($chooser) {
+ say "$chooser chose Scissors.";
+}
+
+sub chose_rock($chooser) {
+ say "$chooser chose Rock.";
+}
+
+sub paper_win {
+ say "Paper covers Rock. ";
+ @winners[0]();
+}
+
+sub paper_loss {
+ say "Paper covers Rock. ";
+ @winners[1]();
+}
+
+sub scissors_win {
+ say "Scissors cuts Paper. ";
+ @winners[0]();
+}
+
+sub scissors_loss {
+ say "Scissors cuts Paper. ";
+ @winners[1]();
+}
+
+sub rock_win {
+ say "Rock smashes Scissors. ";
+ @winners[0]();
+}
+
+sub rock_loss {
+ say "Rock smashes Scissors. ";
+ @winners[1]();
+}
+
+sub draw {
+ say "It's a draw.";
+}
+
+sub winner_A {
+ say "A wins.";
+}
+
+sub winner_B {
+ say "B wins.";
+}
+
+sub MAIN() {
+ my $achoice = (0..2).roll;
+ my $bchoice = (0..2).roll;
+
+ @choices[$achoice]('A');
+ @choices[$bchoice]('B');
+
+ @outcomes[$achoice][$bchoice]();
+}