aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-04-19 00:33:14 +0100
committerGitHub <noreply@github.com>2021-04-19 00:33:14 +0100
commit3dc3888f3948d818f77762a0b8cba0de6b94eb7b (patch)
treed1e65d4cfd96620852c63ed7f6b4408bd24b19df
parent6d29c28364b1c71e456ad8ee1634127c66b85d8b (diff)
parent712a92aab5fa6d393c1b54cc96a04fcb8d6c50c3 (diff)
downloadperlweeklychallenge-club-3dc3888f3948d818f77762a0b8cba0de6b94eb7b.tar.gz
perlweeklychallenge-club-3dc3888f3948d818f77762a0b8cba0de6b94eb7b.tar.bz2
perlweeklychallenge-club-3dc3888f3948d818f77762a0b8cba0de6b94eb7b.zip
Merge pull request #3915 from adamcrussell/challenge-108
Challenge 108
-rw-r--r--challenge-108/adam-russell/blog.txt1
-rw-r--r--challenge-108/adam-russell/blog1.txt1
-rw-r--r--challenge-108/adam-russell/perl/ch-1.pl24
-rw-r--r--challenge-108/adam-russell/perl/ch-2.pl23
-rw-r--r--challenge-108/adam-russell/prolog/ch-2.p32
5 files changed, 81 insertions, 0 deletions
diff --git a/challenge-108/adam-russell/blog.txt b/challenge-108/adam-russell/blog.txt
new file mode 100644
index 0000000000..db44c9116e
--- /dev/null
+++ b/challenge-108/adam-russell/blog.txt
@@ -0,0 +1 @@
+http://www.rabbitfarm.com/cgi-bin/blosxom/perl/2021/04/18
diff --git a/challenge-108/adam-russell/blog1.txt b/challenge-108/adam-russell/blog1.txt
new file mode 100644
index 0000000000..d62efd8d9c
--- /dev/null
+++ b/challenge-108/adam-russell/blog1.txt
@@ -0,0 +1 @@
+http://www.rabbitfarm.com/cgi-bin/blosxom/prolog/2021/04/18
diff --git a/challenge-108/adam-russell/perl/ch-1.pl b/challenge-108/adam-russell/perl/ch-1.pl
new file mode 100644
index 0000000000..ccf434f002
--- /dev/null
+++ b/challenge-108/adam-russell/perl/ch-1.pl
@@ -0,0 +1,24 @@
+use strict;
+use warnings;
+##
+# Write a script to declare a variable or constant and print its location in memory.
+##
+use Devel::Peek;
+use Capture::Tiny q/capture_stderr/;
+use constant A => "test";
+my $a = 1;
+my $address;
+my $stderr = capture_stderr {
+ Dump(A)
+};
+$stderr =~ m/at\s(0x.*\n).*/;
+$address = $1;
+chomp($address);
+print "Address of constant A: $address\n";
+$stderr = capture_stderr {
+ Dump($a)
+};
+$stderr =~ m/at\s(0x.*\n).*/;
+$address = $1;
+chomp($address);
+print "Address of \$a: $address\n";
diff --git a/challenge-108/adam-russell/perl/ch-2.pl b/challenge-108/adam-russell/perl/ch-2.pl
new file mode 100644
index 0000000000..0603718b7d
--- /dev/null
+++ b/challenge-108/adam-russell/perl/ch-2.pl
@@ -0,0 +1,23 @@
+use strict;
+use warnings;
+##
+# Write a script to display the first 10 Bell Numbers.
+##
+sub bell_triangle{
+ my($n) = @_;
+ my @bell_numbers = ([]);
+ $bell_numbers[0]->[0] = 1;
+ for (my $i=1; $i<=$n; $i++) {
+ $bell_numbers[$i]->[0] = $bell_numbers[$i-1]->[$i-1];
+ for (my $j=1; $j<=$i; $j++){
+ $bell_numbers[$i]->[$j] = $bell_numbers[$i-1]->[$j-1] + $bell_numbers[$i]->[$j-1];
+ }
+ }
+ return $bell_numbers[$n]->[0];
+}
+
+MINA:{
+ for my $b (0 .. 9){
+ print "B_$b: " . bell_triangle($b) . "\n";
+ }
+}
diff --git a/challenge-108/adam-russell/prolog/ch-2.p b/challenge-108/adam-russell/prolog/ch-2.p
new file mode 100644
index 0000000000..fc84bee3fa
--- /dev/null
+++ b/challenge-108/adam-russell/prolog/ch-2.p
@@ -0,0 +1,32 @@
+:-initialization(main).
+
+addElement(Element, [FirstList | OtherLists], [ [Element|FirstList] | OtherLists]).
+addElement(Element, [FirstList | OtherLists], [ FirstList | Temp] ):-
+ addElement(Element, OtherLists, Temp).
+
+partition([Single], [[Single]]).
+partition([First|Others], [[First] | Result]) :-
+ partition(Others, Result).
+partition([First|Others], Result) :-
+ partition(Others, Temp),
+ addElement(First, Temp, Result).
+
+bell_numbers(N):-
+ \+ N == 0,
+ N < 10,
+ length(L0, N),
+ setof(P, partition(L0, P), Partitions),
+ length(Partitions, L),
+ write('B_'), write(N), write(': '), write(L), nl,
+ N0 is N + 1,
+ bell_numbers(N0).
+bell_numbers(N):-
+ N == 0,
+ write('B_'), write(N), write(': '), write(1), nl,
+ N0 is N + 1,
+ bell_numbers(N0).
+bell_numbers(_).
+
+main:-
+ bell_numbers(0),
+ halt.