aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-02-20 08:33:47 +0000
committerGitHub <noreply@github.com>2021-02-20 08:33:47 +0000
commite52dc89c3a369c8e88a1010867a4e8d63989c243 (patch)
tree62689fd1666bc88b24169e668151d2647f3fd204
parent332f4657e624309a8371f2a9e9f585bbdb5aba0a (diff)
parent0dd3d7133993d85c7126e28d2b0e601a3a417425 (diff)
downloadperlweeklychallenge-club-e52dc89c3a369c8e88a1010867a4e8d63989c243.tar.gz
perlweeklychallenge-club-e52dc89c3a369c8e88a1010867a4e8d63989c243.tar.bz2
perlweeklychallenge-club-e52dc89c3a369c8e88a1010867a4e8d63989c243.zip
Merge pull request #3579 from jaldhar/challenge-095
Challenge 95 by Jaldhar H. Vyas
-rw-r--r--challenge-095/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-095/jaldhar-h-vyas/perl/ch-1.sh1
-rwxr-xr-xchallenge-095/jaldhar-h-vyas/perl/ch-2.pl115
-rwxr-xr-xchallenge-095/jaldhar-h-vyas/raku/ch-1.sh1
-rwxr-xr-xchallenge-095/jaldhar-h-vyas/raku/ch-2.raku35
5 files changed, 153 insertions, 0 deletions
diff --git a/challenge-095/jaldhar-h-vyas/blog.txt b/challenge-095/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..ce98bf45af
--- /dev/null
+++ b/challenge-095/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2021/02/perl_weekly_challenge_week_95.html
diff --git a/challenge-095/jaldhar-h-vyas/perl/ch-1.sh b/challenge-095/jaldhar-h-vyas/perl/ch-1.sh
new file mode 100755
index 0000000000..e5564254dc
--- /dev/null
+++ b/challenge-095/jaldhar-h-vyas/perl/ch-1.sh
@@ -0,0 +1 @@
+perl -E 'say $ARGV[0] eq reverse($ARGV[0]) ? 1 : 0;' $@ \ No newline at end of file
diff --git a/challenge-095/jaldhar-h-vyas/perl/ch-2.pl b/challenge-095/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..48ee16664d
--- /dev/null
+++ b/challenge-095/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,115 @@
+#!/usr/bin/perl
+
+=head1 NAME
+
+Data::Stack - A Stack Demo
+
+=cut
+
+package Data::Stack;
+use Moo;
+use List::Util;
+use namespace::clean;
+
+=head1 VERSION
+
+Version 0.1
+
+=cut
+
+our $VERSION = '0.1';
+
+=head1 SYNOPSIS
+
+ my $stack = Data::Stack->new;
+ $stack->push(2);
+ $stack->push(-1);
+ $stack->push(0);
+ $stack->pop; # removes 0
+ say $stack->top(); # prints -1
+ $stack->push(0);
+ say $stack->min(); # prints -1
+
+=head1 DESCRIPTION
+
+This is a simple implementation of a stack. A stack is a data structure where
+the items are added and removed in Last In First Out (LIFO) order.
+
+=cut
+
+has _stack => (
+ is => 'rw',
+ default => sub { [] }
+);
+
+=head2 METHODS
+
+=head3 push($value)
+
+ Adds C<$value> onto the top of the stack.
+
+=cut
+
+sub push {
+ my ($self, $value) = @_;
+
+ return push @{$self->_stack}, $value;
+}
+
+=head3 pop()
+
+ removes the value on top of the stack.
+
+=cut
+
+sub pop {
+ my ($self) = @_;
+
+ return pop @{$self->_stack};
+}
+
+=head3 top()
+
+ returns the top element in the stack without removing it.
+
+=cut
+
+sub top {
+ my ($self) = @_;
+
+ return $self->_stack->[-1];
+}
+
+=head3 min()
+
+ returns the minimum element in the stack.
+
+=cut
+
+sub min {
+ my ($self) = @_;
+
+ return List::Util::min( @{$self->_stack} );
+}
+
+=head1 DEPENDENCIES
+
+L<List::Util>, L<Moo>
+
+=head1 BUGS
+
+None yet.
+
+=head1 AUTHOR
+
+Jaldhar H. Vyas, C<< <jaldhar at braincells.com> >>
+
+=head1 LICENSE AND COPYRIGHT
+
+Copyright 2021, Consolidated Braincells Inc.
+
+"Do what thou wilt" shall be the whole of the license.
+
+=cut
+
+1;
diff --git a/challenge-095/jaldhar-h-vyas/raku/ch-1.sh b/challenge-095/jaldhar-h-vyas/raku/ch-1.sh
new file mode 100755
index 0000000000..bc76f94058
--- /dev/null
+++ b/challenge-095/jaldhar-h-vyas/raku/ch-1.sh
@@ -0,0 +1 @@
+raku -e 'say @*ARGS[0] eq @*ARGS[0].flip ?? 1 !! 0;' $@
diff --git a/challenge-095/jaldhar-h-vyas/raku/ch-2.raku b/challenge-095/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..677975029f
--- /dev/null
+++ b/challenge-095/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,35 @@
+#!/usr/bin/raku
+
+class Data::Stack {
+
+ has Int @!stack = ();
+
+ method push(Any $n) {
+ @!stack.push($n);
+ }
+
+ method pop() {
+ return @!stack.pop;
+ }
+
+ method top() {
+ return @!stack.tail;
+ }
+
+ method min() {
+ return @!stack.min;
+ }
+}
+
+# some random operations
+sub MAIN() {
+
+ my $stack = Data::Stack.new;
+ $stack.push(2);
+ $stack.push(-1);
+ $stack.push(0);
+ $stack.pop; # removes 0
+ say $stack.top(); # prints -1
+ $stack.push(0);
+ say $stack.min; # prints -1
+}