Basic prolog help please!!

245dc09a98ef07cf9677c40573ce7c84
0
scampno2 101 Oct 28, 2005 at 11:34

I am really struggling with finding the solutions to the following prolog questions….any help would be greatly appreciated:

1)street_address/2 takes the full name of an individual (arguments 1&2) and prints their street address to the screen. The rule should output a suitable message if the specified user does not exist…

i can get the first bit ok, but unsure of how to output the messgae if the user doesnt exist. the output is supposed to be similar to below:

e.g.
?- street_address(bloggs,fred).
22 york street

?- street_address(mojo,jojo).
No such person

2) neighbours/4 finds a pair of names (arg 1&2) and the addresses (arg 3&4) of any individuals who live next door to one another (i.e. live on same street and their house numbers differ exactly by 2)…. i can get the first bit again but have no idea how to compare the addresses to get something similar to the following output..

?- neighbours(N1,N2,S1,S2).
N1 = name(brown,jack)
N2 = name(black,jack)
S1 = street(9,castlerock,road)
S2 = street(11,castlerock,road)

HELP please!!!

3 Replies

Please log in or register to post a reply.

A9102969e779768e6f0b8cb87e864c94
0
dave_ 101 Oct 28, 2005 at 15:38

Ask your teacher! I dont think you’re supposed to be posting homework questions here

245dc09a98ef07cf9677c40573ce7c84
0
scampno2 101 Nov 02, 2005 at 11:36

Thanks for that but unfortunately it is a self taught module…. any pointers in the right direction would be greatly appreciated.

065f0635a4c94d685583c20132a4559d
0
Ed_Mack 101 Nov 02, 2005 at 14:55

This is of course not proper syntax - there are so many implimentations, that’s your problem :D

For the first one, you could create a street_address rule at the end, to catch unfound references:

street_address (A,B)
print “Not found”

For the neighbours bit:

neighbours (N1, N2, S1, S2)
S1 = street (N, R1, R2)
S2 = street (N+2, R1, R2)

Your syntax is really different from mine, so getting the names bit is for you to do as I’m unsure what I can and cannot do.