这些是我的事实:
%adjroom(Start,End,Key).
adjroom(corridor, room101,17).
adjroom(corridor, room102,3).
adjroom(corridor, room103,5).
adjroom(corridor, room104,20).
adjroom(corridor, store,18).
adjroom(corridor, lift,7).
adjroom(corridor, toilet,11).
adjroom(corridor, kitchen,2).
adjroom(kitchen, laundry,10).
adjroom(lift, lab,13).
我的问题:
需要实施新的安全策略。根据新政策,必须控制机器人进入房间。为了实施此政策,每个机器人都有一个数字 ID,指示机器人可以访问的房间。为给定的一组房间获取 ID 号的基本原理如下:ID 号是通过将机器人需要访问的房间的所有密钥代码相乘获得的。例如,要访问厨房、卫生间和房间 102,需要生成以下 ID 2*11*3=66(请参阅建筑物的平面图了解与每个房间相关的代码)。编写一个 PROLOG 规则,给定一组房间生成与其关联的 ID。
这是我的规则:
rr([ ]).
rr([Y,Y2|T]):-adjroom(X,Y,Z),adjroom(X2,Y2,Z2), Q is Z * Z2, print(Q),rr([Y2|T]).