TL的规则; DR:需要帮助调用规则与事实
从来就开始了序言,由C来和得到的东西的工作...直到他们显然得到打破。我正在为自己写一个小型汽车涂料程序,因为我正在学习这门新语言序言 - 调用与事实
我想用事实调用规则(这是可能的吗?),我想要做的是使用一个事实上“汽车”和另一个事实“油漆”,使所有不同的涂料中的所有汽车组成一个大名单。我无法使代码工作,因为我想...看看
从来就得到了事实:
cars([ferrari, bmw, ford, jaguar]).
paints([red, white, blue, yellow]).
/*Now I wanted to loop through each car, eachtime printing
out the different paint combinations of that car: */
start:- loop_cars(cars(C)). /*starts loop_cars with all the cars e.g [ferrari...]*/
/*but it false here, even if C = [ferrari...]*/
loop_cars([]).
loop_cars([Ca|Rest]):-
loop_paints(Ca,paints(P)), /*The car is sent off for a paint job,...*/
loop_cars(Rest). /*...(cont from above) same false here as before*/
loop_paints(_,[]).
loop_paints(Ca,[Pa|Rest]):- /*This works*/
write([Ca,Pa]), /*Writes it like "[ferrari, white] [ferrari, blue] ..."*/
loop_paints(Ca,Rest).
所以我想我需要帮助解决两个问题:
- 我如何将事实汽车和涂料的内容传递给两个循环?
- 一个“车库”,把所有的组合。车库是一个大列表组成的小2项目列表(汽车和油漆)。
我,由于我不知道任何的Prolog觉得不够用。这是正常的吗? – JAL 2010-10-24 01:13:06