Prolog地图着色代码q规则报singleton variables警告如何解决
Prolog地图着色程序单例变量警告解决方法
警告原因
该警告是因为你定义的q/0规则中,S1、S2、Color三个变量仅在规则体中出现了一次,没有被其他谓词使用,Prolog编译器默认会对这类只出现一次的「单例变量」抛出提示,避免开发者出现拼写错误或者定义了无用变量的问题。
解决方案
方案1:仅需校验是否存在错误
如果你只需要判断是否存在配色错误,不需要输出具体错误详情,直接将变量替换为Prolog的匿名变量_即可,匿名变量不会触发单例警告,功能和你原有写法完全一致:
q :- miscolor(_, _, _).
调用q时如果存在相邻州同色的情况会返回true,否则返回false。
方案2:需要输出错误详情
如果你希望调用q时自动输出所有配色错误的具体信息,可以增加打印逻辑消耗变量,自然就不会触发警告,同时使用体验更好:
% 遍历所有配色错误并打印详情 q :- miscolor(S1, S2, Color), format("配色错误:相邻州~w与~w使用了相同颜色~w~n", [S1, S2, Color]), fail. % 所有错误遍历完成后输出最终提示 q :- write("未检测到配色错误"), nl.
内容的提问来源于stack exchange,提问作者ivanka georgieva
相关产品推荐
相关产品推荐

