aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-095/adam-russell/blog.txt1
-rw-r--r--challenge-095/adam-russell/blog1.txt1
-rw-r--r--challenge-095/adam-russell/perl/Stack.pm32
-rw-r--r--challenge-095/adam-russell/perl/ch-1.pl37
-rw-r--r--challenge-095/adam-russell/perl/ch-2.pl17
-rw-r--r--challenge-095/adam-russell/prolog/ch-1.p47
-rw-r--r--challenge-095/adam-russell/prolog/ch-2.p29
7 files changed, 164 insertions, 0 deletions
diff --git a/challenge-095/adam-russell/blog.txt b/challenge-095/adam-russell/blog.txt
new file mode 100644
index 0000000000..33cc038c1e
--- /dev/null
+++ b/challenge-095/adam-russell/blog.txt
@@ -0,0 +1 @@
+http://www.rabbitfarm.com/cgi-bin/blosxom/perl/2021/01/17
diff --git a/challenge-095/adam-russell/blog1.txt b/challenge-095/adam-russell/blog1.txt
new file mode 100644
index 0000000000..647d5011d7
--- /dev/null
+++ b/challenge-095/adam-russell/blog1.txt
@@ -0,0 +1 @@
+http://www.rabbitfarm.com/cgi-bin/blosxom/prolog/2021/01/17
diff --git a/challenge-095/adam-russell/perl/Stack.pm b/challenge-095/adam-russell/perl/Stack.pm
new file mode 100644
index 0000000000..26f741eccc
--- /dev/null
+++ b/challenge-095/adam-russell/perl/Stack.pm
@@ -0,0 +1,32 @@
+use strict;
+use warnings;
+package Stack{
+ use boolean;
+ use Class::Struct;
+
+ struct(
+ data => q/@/
+ );
+
+ sub push{
+ my($self, $n) = @_;
+ push @{$self->data()}, $n;
+ }
+
+ sub pop{
+ my($self, $n) = @_;
+ pop @{$self->data()};
+ }
+
+ sub top{
+ my($self, $n) = @_;
+ @{$self->data()}[@{$self->data()} - 1];
+ }
+
+ sub min{
+ my($self, $n) = @_;
+ my @sorted = sort {$a <=> $b} @{$self->data()};
+ return $sorted[0];
+ }
+ true;
+}
diff --git a/challenge-095/adam-russell/perl/ch-1.pl b/challenge-095/adam-russell/perl/ch-1.pl
new file mode 100644
index 0000000000..5be79e61d4
--- /dev/null
+++ b/challenge-095/adam-russell/perl/ch-1.pl
@@ -0,0 +1,37 @@
+use strict;
+use warnings;
+##
+# You are given a number $N.
+# Write a script to figure out if the given number is Palindrome.
+# Print 1 if true otherwise 0.
+##
+use boolean;
+
+sub is_palindrome{
+ my($n) = @_;
+ return false if $n < 0;
+ my @digits = split(//, $n);
+ if(@digits % 2 == 0){
+ do{
+ my $a = shift @digits;
+ my $b = pop @digits;
+ return false if $a != $b;
+ }while(@digits);
+ return true;
+ }
+ do{
+ my $a = shift @digits;
+ my $b = pop @digits;
+ return false if $a != $b;
+ }while(@digits != 1);
+ return true;
+}
+
+MAIN:{
+ print is_palindrome(1221);
+ print "\n";
+ print is_palindrome(-101);
+ print "\n";
+ print is_palindrome(90);
+ print "\n";
+} \ No newline at end of file
diff --git a/challenge-095/adam-russell/perl/ch-2.pl b/challenge-095/adam-russell/perl/ch-2.pl
new file mode 100644
index 0000000000..faafa60ed9
--- /dev/null
+++ b/challenge-095/adam-russell/perl/ch-2.pl
@@ -0,0 +1,17 @@
+use strict;
+use warnings;
+##
+# Write a script to demonstrate Stack operations.
+##
+use Stack;
+
+use Data::Dump q/pp/;
+
+my $stack = new Stack();
+$stack->push(2);
+$stack->push(-1);
+$stack->push(0);
+$stack->pop;
+print $stack->top . "\n";
+$stack->push(0);
+print $stack->min . "\n"; \ No newline at end of file
diff --git a/challenge-095/adam-russell/prolog/ch-1.p b/challenge-095/adam-russell/prolog/ch-1.p
new file mode 100644
index 0000000000..d40e0ec417
--- /dev/null
+++ b/challenge-095/adam-russell/prolog/ch-1.p
@@ -0,0 +1,47 @@
+/*
+* Write a script to figure out if the given number is Palindrome.
+* Print 1 if true otherwise 0.
+*/
+:-initialization(main).
+
+palindrome_even([]).
+palindrome_even([H|T]):-
+ last(T, Last),
+ H == Last,
+ append(L, [Last], T),
+ palindrome_even(L).
+
+palindrome_odd([_|[]]).
+palindrome_odd([H|T]):-
+ last(T, Last),
+ H == Last,
+ append(L, [Last], T),
+ palindrome_odd(L).
+
+palindrome(N):-
+ N > 0,
+ number_chars(N, C),
+ length(C, Length),
+ M is Length mod 2,
+ M == 0,
+ palindrome_even(C).
+palindrome(N):-
+ N > 0,
+ number_chars(N, C),
+ length(C, Length),
+ M is Length mod 2,
+ M == 1,
+ palindrome_odd(C).
+
+is_palindrome(N):-
+ palindrome(N),
+ write(1), nl.
+is_palindrome(N):-
+ \+ palindrome(N),
+ write(0), nl.
+
+main:-
+ is_palindrome(1221),
+ is_palindrome(-101),
+ is_palindrome(90),
+ halt.
diff --git a/challenge-095/adam-russell/prolog/ch-2.p b/challenge-095/adam-russell/prolog/ch-2.p
new file mode 100644
index 0000000000..95d09eee58
--- /dev/null
+++ b/challenge-095/adam-russell/prolog/ch-2.p
@@ -0,0 +1,29 @@
+/*
+* Demonstrate Stack operations.
+*/
+:-initialization(main).
+
+new_stack([]).
+
+push(Stack, Value, [Value|Stack]).
+
+pop([H|T], H, T).
+
+top([H|_], H).
+
+min(Stack, Min):-
+ min_list(Stack, Min).
+
+main:-
+ new_stack(Stack),
+ push(Stack, 2, NewStack0),
+ push(NewStack0, -1, NewStack1),
+ push(NewStack1, 0, NewStack2),
+ pop(NewStack2, Top0, NewStack3),
+ write(Top0), nl,
+ top(NewStack3, Top1),
+ write(Top1), nl,
+ push(NewStack3, 0, NewStack4),
+ min(NewStack4, Min),
+ write(Min), nl,
+ halt. \ No newline at end of file