diff options
| -rw-r--r-- | challenge-095/adam-russell/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-095/adam-russell/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-095/adam-russell/perl/Stack.pm | 32 | ||||
| -rw-r--r-- | challenge-095/adam-russell/perl/ch-1.pl | 37 | ||||
| -rw-r--r-- | challenge-095/adam-russell/perl/ch-2.pl | 17 | ||||
| -rw-r--r-- | challenge-095/adam-russell/prolog/ch-1.p | 47 | ||||
| -rw-r--r-- | challenge-095/adam-russell/prolog/ch-2.p | 29 |
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 |
