これらは私の事実です:
%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 を生成する必要があります (各部屋に関連付けられたコードについては、建物の平面図を参照してください)。部屋のセットがそれに関連付けられた ID を生成する PROLOG ルールを記述します。
これが私のルールです:
rr([ ]).
rr([Y,Y2|T]):-adjroom(X,Y,Z),adjroom(X2,Y2,Z2), Q is Z * Z2, print(Q),rr([Y2|T]).