Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Programming Problem

Status
Not open for further replies.

ITGuy97

Programmer
Mar 21, 1999
1
0
0
US
I was having some problems programming in the language Prolog, and I was looking for a little help. I'm supposed to program a small section of code that will return an item number from a list. It uses three parameters. For example getnth([a,b,c,d],4,Answer) will return Answer = d. Could you help me program this.<br>
Thank you
 
I believe the answer goes something like this, though I have done little prolog:<br><br>getNth([H¦T], 0, Answer):-&nbsp;&nbsp;//To cope with idiotic call<br>&nbsp;&nbsp;&nbsp;&nbsp;Answer is H.<br><br>getNth([H¦T], 1, Answer):-&nbsp;&nbsp;//when N=1, counted to Nth<br>&nbsp;&nbsp;&nbsp;&nbsp;Answer is H.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//member of list<br><br>getNth([H¦T], N, Answer):-&nbsp;&nbsp;//if N&gt;1, call N-1, remove head<br>&nbsp;&nbsp;&nbsp;&nbsp;getNth(T, N-1, Answer). //of list<br> <p>Chris<br><a href=mailto:NaroonHa_IV@hotmail.com>NaroonHa_IV@hotmail.com</a><br><a href= > </a><br>Inward Investment Europe sells the most up to date (we actually sell it back to the EU!) information on Europe (EU and CEE). Detailing Inward Investment Incentives, Taxation Rates and Labour regulations among other things. Personal plug... been programmin
 
I'm sending you the sample database that i've created in amzi prolog for my task.

main :- budget

% money(amount).

money(10-20).
money(30-40).
money(50-60).
money(70-80).
money(90-110).

% details(gender, age-group, bmi).

details(male, 0-2, underweight).
details(male, 3-5, underweight).
details(male, 6-9, underweight).
details(male, 10-15, underweight).
details(male, 16-20, underweight).
details(male, 21-29, underweight).
details(male, 30-39, underweight).
details(male, 40-50, underweight).
details(male, 0-2, normal).
details(male, 3-5, normal).
details(male, 6-9, normal).
details(male, 10-15,normal).
details(male, 16-20, normal).
details(male, 21-29, normal).
details(male, 30-39, normal).
details(male, 40-50, normal).
details(male, 0-2, overweight).
details(male, 3-5, overweight).
details(male, 6-9, overweight).
details(male, 10-15,overweight).
details(male, 16-20, overweight).
details(male, 21-29, overweight).
details(male, 30-39, overweight).
details(male, 40-50, overweight).
details(female, 0-2, underweight).
details(female, 3-5, underweight).
details(female, 6-9, underweight).
details(female, 10-15, underweight).
details(female, 16-20, underweight).
details(female, 21-29, underweight).
details(female, 30-39, underweight).
details(female, 40-50, underweight).
details(female, 0-2, normal).
details(female, 3-5, normal).
details(female, 6-9, normal).
details(female, 10-15,normal).
details(female, 16-20, normal).
details(female, 21-29, normal).
details(female, 30-39, normal).
details(female, 40-50, normal).
details(female, 0-2, overweight).
details(female, 3-5, overweight).
details(female, 6-9, overweight).
details(female, 10-15,overweight).
details(female, 16-20, overweight).
details(female, 21-29, overweight).
details(female, 30-39, overweight).
details(female, 40-50, overweight).

% like_to_be(preference).

like_to_be(vegetarian).
like_to_be(non_vegetarian).

%calories_intake(bmi,calorie).

calories_intake(underweight,100-200).
calories_intake(underweight,200-300).
calories_intake(underweight,300-400).
calories_intake(underweight,400-500).
calories_intake(underweight,500-600).
calories_intake(underweight,600-700).
calories_intake(underweight,700-800).
calories_intake(underweight,800-900).
calories_intake(normal,100-200).
calories_intake(normal,200-300).
calories_intake(normal,300-400).
calories_intake(normal,400-500).
calories_intake(normal,500-600).
calories_intake(normal,600-700).
calories_intake(normal,700-800).
calories_intake(normal,800-900).
calories_intake(overweight,50-100).
calories_intake(overweight,100-200).
calories_intake(overweight,200-300).

%class(category).

class(vegetable).
class(seafood).
class(beverages).
class(dairy).
class(poultry).
class(canned_foods).
class(fruits).
class(meat).


%vegetable(product, gram_weight, calories).

vegetable(asparagus,93,25).
vegetable(bell_pepper,148,30).
vegetable(brocolli,148,45).
vegetable(carrot,78,35).
vegetable(cauliflower,99,25).
vegetable(celery,110,20).
vegetable(cucumber,99,15).
vegetable(potato,148,100).
vegetable(mushrooms,84,20).
vegetable(radishes,85,15).
vegetable(sweet_potato,130,130).
vegetable(tomato,148,35).
vegetable(lettuce,85,15).

%meat(product, gram_weight, calories).

meat(ground_beef,85,210).
meat(brisket,85,290).
meat(rib_steak,85,280).
meat(top_loin,85,230).
meat(tenderloin_steak,85,240).
meat(sirloin_steak,85,2850).
meat(eye_round,85,8570).
meat(bottom_round,85,220).
meat(arm_steak,85,200).
meat(blade_steak,85,8590).
meat(cutlets,85,8540).
meat(lamb_rib_roast,85,290).

%fruit(product, gram_weight, calories).

fruit(apple,154,80).
fruit(avacado,30,55).
fruit(banana,126,110).
fruit(grapes,136,90).
fruit(kiwifruit,148,100).
fruit(lemon,58,15).
fruit(honeydew,134,100).
fruit(orange,154,70).
fruit(peach,98,40).
fruit(pear,166,100).
fruit(pineapple,112,60).
fruit(plums,132,80).
fruit(strawberries,147,45).
fruits(watermelon,280,80).

%seafood(product, gram_weight, calories).

seafood(blue crab,85,100).
seafood(clams,85,100).
seafood(mackerel,85,210).
seafood(salmon,85,160).
seafood(scallops,85,120).
seafood(shrimp,85,80).
seafood(swordfish,85,130).


%product(price).

asparagus(2.39).
bell_pepper(2.11).
brocolli(3.75).
carrot(0.70).
cauliflower(1.99).
celery(1.10).
cucumber(1.20).
potato(1.48).
mushrooms(0.84).
radishes(0.85).
sweet_potato(1.30).
tomato(1.70).
lettuce(1.85).
ground_beef(8.50).
brisket(8.29).
rib_steak(8.52).
top_loin(8.23).
tenderloin_steak(8.24).
sirloin_steak(6.90).
eye_round(9.00).
bottom_round(5.76).
arm_steak(5.20).
blade_steak(12.85).
cutlets(4.02).
lamb_rib_roast(5.29).
apple(1.54).
avacado(3.55).
banana(1.26).
grapes(3.69).
kiwifruit(0.48).
lemon(0.58).
honeydew(1.34).
orange(0.70).
peach(0.90).
pear(1.00).
pineapple(1.12).
plums(0.80).
strawberries(0.60).
watermelon(0.80).
blue crab(18.51).
clams(2.80).
mackerel(2.10).
salmon(16.03).
scallops(8.52).
shrimp(18.90).
swordfish(5.13).


Please help....i'm runningout of time and i do not have anybody to help me. Please do not disregard this plea by saying that this question is too long.

Q1. Is the database that i've created correct and sufficient to get answers? the like_to_be would be for people who are vegetarian or otherwise

Q2. The rules I want to create is with the body mass index(bmi), gender and age...to suggest a healthy food itenary based on the budget given. The food suggested would 1 item by default.

Q3. Please show me how to do it...by creating at least one rule where i can follow.

Please do not forsake me...this is very important for me.

Hoping to get an answers soon .
Eileen
 
findnth([ ],Number,Element :- !, fail.
findnth([Element | T],1,Element) :- !.
findnth([H|T],Number,Element) :-
nonvar(Number),
Value is Number - 1,
findnth(T,Value,Thing), Element = Thing.

 
DOMAINS
slist = string*
PREDICATES
member(slist,string,integer)
CLAUSES
% Member List , Element, Index /*Index of head=1*/)
member([Member|_],Member,1).

%member([_|Tail],Member,Index) if free(Index),member(Tail,Member,Index_1),Index=Index_1+1.
member([_|Tail],Member,Index) if
member(Tail,Member,Index_1),Index=Index_1+1.
Frank Nagy

 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top