aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-108/adam-russell/blog1.txt1
-rw-r--r--challenge-108/adam-russell/prolog/ch-1.p0
-rw-r--r--challenge-108/adam-russell/prolog/ch-2.p32
3 files changed, 33 insertions, 0 deletions
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/prolog/ch-1.p b/challenge-108/adam-russell/prolog/ch-1.p
deleted file mode 100644
index e69de29bb2..0000000000
--- a/challenge-108/adam-russell/prolog/ch-1.p
+++ /dev/null
diff --git a/challenge-108/adam-russell/prolog/ch-2.p b/challenge-108/adam-russell/prolog/ch-2.p
index e69de29bb2..fc84bee3fa 100644
--- a/challenge-108/adam-russell/prolog/ch-2.p
+++ 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.