这里是 ASP 初学者 :) 当输入中未提供原子时,我需要为原子定义一个默认值。
% creating rooms
cost(create(room(R)), W) :- room(R), roomDomainNew(R), roomCost(W).
在这里,如果
roomCost(W)
未定义,我想回退到 roomCost(0)
零成本。我该怎么做?
当输入有自己的
roomCost(0)
时定义 roomCost
会导致两者共存。
roomCost(0).
roomCost(5).
在其他语言中,我可以这样做:
finalRoomCost = 0
if roomCost:
finalRoomCost = roomCost
然后我就可以使用
finalRoomCost
。这里可以吗?
相关答案here,它说这种可变性是不可能的。
在 ASP 中,真值不会随时间变化,对于特定的答案集,原子是
或
true
,它们不能被覆盖。
false
所以这是我使用
#max
指令的解决方案:
roomCost(0).
finalroomCost(W) :- roomCost(0), #max {X, 1 : roomCost(X)} = W.