diff options
| author | Jaldhar H. Vyas <jaldhar@braincells.com> | 2019-11-17 19:01:29 -0500 |
|---|---|---|
| committer | Jaldhar H. Vyas <jaldhar@braincells.com> | 2019-11-17 19:01:29 -0500 |
| commit | 57a8f45d4ffab36063e210bcf7e98e7bb5d0c228 (patch) | |
| tree | 210cbc5eef61118c49fe8f4c7eb0302d70031f51 /challenge-034 | |
| parent | 1cb9654dd6e3a40a12c031c3d9b7f9e610f30d70 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-034/jaldhar-h-vyas/perl5/ch-2.pl | 82 | ||||
| -rwxr-xr-x | challenge-034/jaldhar-h-vyas/perl6/ch-1.p6 | 28 | ||||
| -rwxr-xr-x | challenge-034/jaldhar-h-vyas/perl6/ch-2.p6 | 75 |
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](); +} |
