Prolog Exercise 1

Informal Description

The aim of this exercise is to solve problems of the following type:

Assuming that it is possible to give a person Lm. N, where N is some amount between 0 and L, how many different ways are there to distribute a total amount? Lm. L to P persons.

In particular:

  1. Solve the problem for N=0-9 P=2
  2. Solve the problem for N=0-9 P=3-5
To answer this question you need only material from tutorial 1. In particular it does not require knowledge of rules. The problem will posed to Prolog in the form of a conjoined query. The answer will not appear directly, but will be implicit in the number of solutions obtained.

How to Proceed

Part 1

The first part can be solved directly by creating a set of facts that completely encodes the the relation sum(X,Y,N) between two numbers X, Y and their sum N. The facts for N=1 are:
sum(0,1,1). i.e. (0 + 1 = 1)
sum(1,0,1). i.e. (1 + 0 = 1)
If the facts are loaded into the database, the query
?- sum(P1,P2,1).
encodes the problem for P=2 and N=1. There are clearly two solutions. Complete the answer to part 1 by encoding facts for N=0, N=2-9 and testing.

Part 2

The second part is solved by merely formulating the appropriate conjoined queries to express the P-component sum. Hence for P=3, we have P1+P2+P3=N.

Only follow this link if you have thought about how to proceed and emerged clueless.

Mike Rosner (
Last modified: Thu May 15 17:07:38 MET DST