我正在制作像Prolog中的应用程序一样的策划者,但我仍然在猜测解决方案的其余部分。 我设法做了第一个猜测,这是一个6种随机颜色的列表。 我想告诉Prolog正确的猜测,然后它需要尝试用新颜色填充该列表中的空白。
color(green).
color(red).
color(blue).
color(purple).
color(yellow).
color(brown).
color(black).
guessedcorrect(Correct, Guess) :-
Guess = Correct,
Guess = [S1, S2, S3, S4, S5, S6].
| ?- guessedcorrect([A, B, color(blue), D, E, F], Guess).
A = color(C)
B = color(G)
D = color(H)
E = color(I)
F = color(J)
Guess = [C,G,blue,H,I,J]
为什么这样做? 我希望它能为每个变量提供一种颜色,并保持蓝色。例如。
Guess = [green, black, blue, blue, green, red]
然后我想告诉它猜对了哪些颜色。
guessedcorrect(A, black, blue, D, E, red).
我试图用_替换变量,但它只给了我颜色(_)。
答案 0 :(得分:0)
Clocksin-Mellish'教科书有一个策划者的例子,我曾用它测试我的Prolog翻译。
从你的问题我无法确定你为这个困难的谜题编写解决方案的程度(该程序实际上比我好得多)。所以请考虑这个“答案”的价值:几乎没有:)
尝试
guessedcorrect(Correct, Guess) :-
maplist(test_color, Correct),
Guess = Correct.
test_color(color(C)) :- color(C).
你得到了
?- guessedcorrect([A, B, color(blue), D, E, F], Guess).
A = B, B = D, D = E, E = F, F = color(green),
Guess = [color(green), color(green), color(blue), color(green), color(green), color(green)] ;
A = B, B = D, D = E, E = color(green),
F = color(red),
Guess = [color(green), color(green), color(blue), color(green), color(green), color(red)]
...